23 static const double WMASS = 80.4;
25 MonitorEnsemble::MonitorEnsemble(
const char*
label,
46 sources.
getParameter<std::vector<edm::InputTag>>(
"mets"))
144 triggerExtras.
getParameter<std::vector<std::string>>(
"paths");
195 hists_[
"pvMult_"] = ibooker.
book1D(
"PvMult",
"N_{pvs}", 100, 0., 100.);
197 hists_[
"muonPt_"] = ibooker.
book1D(
"MuonPt",
"pt(#mu)", 50, 0., 250.);
199 hists_[
"muonMult_"] = ibooker.
book1D(
"MuonMult",
"N_{20}(#mu)", 10, 0., 10.);
201 hists_[
"muonMultIso_"] = ibooker.
book1D(
"MuonMultIso",
"N_{Iso}(#mu)", 10, 0., 10.);
203 hists_[
"elecPt_"] = ibooker.
book1D(
"ElecPt",
"pt(e)", 50, 0., 250.);
205 hists_[
"elecMult_"] = ibooker.
book1D(
"ElecMult",
"N_{30}(e)", 10, 0., 10.);
207 hists_[
"elecMultIso_"] = ibooker.
book1D(
"ElecMultIso",
"N_{Iso}(e)", 10, 0., 10.);
209 hists_[
"jetMult_"] = ibooker.
book1D(
"JetMult",
"N_{30}(jet)", 10, 0., 10.);
212 "Eff(trigger)", nPaths, 0., nPaths);
215 "Mon(trigger)", nPaths, 0., nPaths);
217 hists_[
"slimmedMETs_"] = ibooker.
book1D(
"slimmedMETs",
"MET_{slimmed}", 50, 0., 200.);
220 hists_[
"slimmedMETsNoHF_"] = ibooker.
book1D(
"slimmedMETsNoHF",
"MET_{slimmedNoHF}", 50, 0., 200.);
222 hists_[
"slimmedMETsPuppi_"] = ibooker.
book1D(
"slimmedMETsPuppi",
"MET_{slimmedPuppi}", 50, 0., 200.);
224 hists_[
"massW_"] = ibooker.
book1D(
"MassW",
"M(W)", 60, 0., 300.);
226 hists_[
"massTop_"] = ibooker.
book1D(
"MassTop",
"M(Top)", 50, 0., 500.);
228 hists_[
"MTWm_"] = ibooker.
book1D(
"MTWm",
"M_{T}^{W}(#mu)", 60, 0., 300.);
230 hists_[
"mMTT_"] = ibooker.
book1D(
"mMTT",
"M_{T}^{t}(#mu)", 50, 0., 500.);
233 hists_[
"MTWe_"] = ibooker.
book1D(
"MTWe",
"M_{T}^{W}(e)", 60, 0., 300.);
235 hists_[
"eMTT_"] = ibooker.
book1D(
"eMTT",
"M_{T}^{t}(e)", 50, 0., 500.);
245 hists_[
"muonEta_"] = ibooker.
book1D(
"MuonEta",
"#eta(#mu)", 30, -3., 3.);
247 hists_[
"muonPFRelIso_"] = ibooker.
book1D(
"MuonPFRelIso",
248 "PFIso_{Rel}(#mu)", 50, 0., 1.);
249 hists_[
"muonRelIso_"] = ibooker.
book1D(
"MuonRelIso",
"Iso_{Rel}(#mu)", 50, 0., 1.);
252 hists_[
"elecEta_"] = ibooker.
book1D(
"ElecEta",
"#eta(e)", 30, -3., 3.);
254 hists_[
"elecRelIso_"] = ibooker.
book1D(
"ElecRelIso",
"Iso_{Rel}(e)", 50, 0., 1.);
255 hists_[
"elecPFRelIso_"] = ibooker.
book1D(
"ElecPFRelIso",
256 "PFIso_{Rel}(e)", 50, 0., 1.);
261 "N_{30}(b/eff)", 10, 0., 10.);
265 "Disc_{b/eff}(jet)", 100, 0., 10.);
268 hists_[
"jet1Eta_"] = ibooker.
book1D(
"Jet1Eta",
"#eta (jet1)", 50, -5., 5.);
270 hists_[
"jet2Eta_"] = ibooker.
book1D(
"Jet2Eta",
"#eta (jet2)", 50, -5., 5.);
273 hists_[
"jet1Pt_"] = ibooker.
book1D(
"Jet1Pt",
"pt_{L2L3}(jet1)", 60, 0., 300.);
275 hists_[
"jet2Pt_"] = ibooker.
book1D(
"Jet2Pt",
"pt_{L2L3}(jet2)", 60, 0., 300.);
278 hists_[
"TaggedJetEta_"] = ibooker.
book1D(
"TaggedJetEta",
279 "#eta (Tagged jet)", 50, -5., 5.);
281 "pt_{L2L3}(Tagged jet)", 60, 0., 300.);
284 hists_[
"UnTaggedJetEta_"] = ibooker.
book1D(
"UnTaggedJetEta",
285 "#eta (UnTagged jet)", 50, -5., 5.);
286 hists_[
"UnTaggedJetPt_"] = ibooker.
book1D(
"UnTaggedJetPt",
287 "pt_{L2L3}(UnTagged jet)", 60, 0., 300.);
290 hists_[
"FwdJetEta_"] = ibooker.
book1D(
"FwdJetEta",
"#eta (Fwd jet)", 50, -5., 5.);
292 "pt_{L2L3}(Fwd jet)", 60, 0., 300.);
295 hists_[
"TaggedJetPtEta_"] = ibooker.
book2D(
"TaggedJetPt_Eta",
296 "(pt vs #eta)_{L2L3}(Tagged jet)", 60, 0., 300., 50, -5., 5.);
299 hists_[
"UnTaggedJetPtEta_"] = ibooker.
book2D(
"UnTaggedJetPt_Eta",
300 "(pt vs #eta)_{L2L3}(UnTagged jet)", 60, 0., 300., 50, -5., 5.);
305 hists_[
"muonDelZ_"] = ibooker.
book1D(
"MuonDelZ",
"d_{z}(#mu)", 50, -25., 25.);
308 "d_{xy}(#mu)", 50, -0.1, 0.1, 50, -0.1, 0.1);
311 hists_[
"muonDelXY_"]->setAxisTitle(
"x [cm]", 1);
312 hists_[
"muonDelXY_"]->setAxisTitle(
"y [cm]", 2);
319 hists_[
"muonChHadIso_"] = ibooker.
book1D(
"MuonChHadIso",
320 "Iso_{ChHad}(#mu)", 100, 0., 1.);
322 hists_[
"muonNeuHadIso_"] = ibooker.
book1D(
"MuonNeuHadIso",
323 "Iso_{NeuHad}(#mu)", 100, 0., 1.);
325 hists_[
"muonPhIso_"] = ibooker.
book1D(
"MuonPhIso",
"Iso_{Ph}(#mu)", 100, 0., 1.);
328 hists_[
"elecChHadIso_"] = ibooker.
book1D(
"ElecChHadIso",
329 "Iso_{ChHad}(e)", 100, 0., 1.);
331 hists_[
"elecNeuHadIso_"] = ibooker.
book1D(
"ElecNeuHadIso",
332 "Iso_{NeuHad}(e)", 100, 0., 1.);
334 hists_[
"elecPhIso_"] = ibooker.
book1D(
"ElecPhIso",
"Iso_{Ph}(e)", 100, 0., 1.);
339 "N_{30}(b/pur)", 10, 0., 10.);
342 "Disc_{b/pur}(Jet)", 200, -10., 10.);
344 hists_[
"jet1BDiscPur_"] = ibooker.
book1D(
"Jet1BDiscPur",
345 "Disc_{b/pur}(Jet1)", 200, -10., 10.);
347 hists_[
"jet2BDiscPur_"] = ibooker.
book1D(
"Jet2BDiscPur",
348 "Disc_{b/pur}(Jet2)", 200, -10., 10.);
352 "N_{30}(b/vtx)", 10, 0., 10.);
355 "Disc_{b/vtx}(Jet)", 35, -1., 6.);
359 hists_[
"jetMultBCombVtx_"] = ibooker.
book1D(
"JetMultBCombVtx",
360 "N_{30}(b/CSV)", 10, 0., 10.);
362 hists_[
"jetBDiscCombVtx_"] = ibooker.
book1D(
"JetBDiscCombVtx",
363 "Disc_{b/CSV}(Jet)", 60, -1., 2.);
365 hists_[
"jet1BDiscCombVtx_"] = ibooker.
book1D(
"Jet1BDiscCombVtx",
366 "Disc_{b/CSV}(Jet1)", 60, -1., 2.);
368 hists_[
"jet2BDiscCombVtx_"] = ibooker.
book1D(
"Jet2BDiscCombVtx",
369 "Disc_{b/CSV}(Jet2)", 60, -1., 2.);
372 hists_[
"jet1PtRaw_"] = ibooker.
book1D(
"Jet1PtRaw",
"pt_{Raw}(jet1)", 60, 0., 300.);
374 hists_[
"jet2PtRaw_"] = ibooker.
book1D(
"Jet2PtRaw",
"pt_{Raw}(jet2)", 60, 0., 300.);
378 "Logged Events", 9, 0., 9., 10, 0., 10.);
381 hists_[
"eventLogger_"]->getTH1()->SetOption(
"TEXT");
382 hists_[
"eventLogger_"]->setBinLabel(1,
"Run", 1);
383 hists_[
"eventLogger_"]->setBinLabel(2,
"Block", 1);
384 hists_[
"eventLogger_"]->setBinLabel(3,
"Event", 1);
385 hists_[
"eventLogger_"]->setBinLabel(4,
"pt_{L2L3}(jet1)", 1);
386 hists_[
"eventLogger_"]->setBinLabel(5,
"pt_{L2L3}(jet2)", 1);
387 hists_[
"eventLogger_"]->setBinLabel(6,
"pt_{L2L3}(jet3)", 1);
388 hists_[
"eventLogger_"]->setBinLabel(7,
"pt_{L2L3}(jet4)", 1);
389 hists_[
"eventLogger_"]->setBinLabel(8,
"M_{W}", 1);
390 hists_[
"eventLogger_"]->setBinLabel(9,
"M_{Top}", 1);
391 hists_[
"eventLogger_"]->setAxisTitle(
"logged evts", 2);
413 unsigned int pvMult = 0;
415 pv != pvs->end(); ++
pv) {
418 fill(
"pvMult_", pvMult);
439 unsigned int eMult = 0, eMultIso = 0;
440 std::vector<const pat::Electron*> isoElecs;
443 unsigned int idx_gsf = 0;
448 double isolationRel =
449 (elec->dr03TkSumPt() + elec->dr03EcalRecHitSumEt() +
450 elec->dr03HcalTowerSumEt()) /
453 double isolationChHad =
455 (elec->pt() + elec->pfIsolationVariables().sumChargedHadronPt);
456 double isolationNeuHad =
458 (elec->pt() + elec->pfIsolationVariables().sumNeutralHadronEt);
459 double isolationPhoton =
461 (elec->pt() + elec->pfIsolationVariables().sumPhotonEt);
462 double el_ChHadIso = elec->pfIsolationVariables().sumChargedHadronPt;
463 double el_NeHadIso = elec->pfIsolationVariables().sumNeutralHadronEt;
464 double el_PhIso = elec->pfIsolationVariables().sumPhotonEt;
465 double PFisolationRel =
467 max(0., el_NeHadIso + el_PhIso -
468 0.5 * elec->pfIsolationVariables().sumPUPt)) /
472 fill(
"elecPt_", elec->pt());
473 fill(
"elecEta_", elec->eta());
474 fill(
"elecRelIso_", isolationRel);
475 fill(
"elecPFRelIso_", PFisolationRel);
476 fill(
"elecChHadIso_", isolationChHad);
477 fill(
"elecNeuHadIso_", isolationNeuHad);
478 fill(
"elecPhIso_", isolationPhoton);
483 if (eMultIso == 0) e = *elec;
484 isoElecs.push_back(&(*elec));
492 fill(
"elecMult_", eMult);
493 fill(
"elecMultIso_", eMultIso);
504 unsigned int mMult = 0, mMultIso = 0;
515 if (
muon->isGlobalMuon()) {
516 fill(
"muonDelZ_",
muon->globalTrack()->vz());
517 fill(
"muonDelXY_",
muon->globalTrack()->vx(),
muon->globalTrack()->vy());
522 double isolationRel =
523 (
muon->isolationR03().sumPt +
muon->isolationR03().emEt +
524 muon->isolationR03().hadEt) /
526 double isolationChHad =
528 (
muon->pt() +
muon->pfIsolationR04().sumChargedHadronPt);
529 double isolationNeuHad =
531 (
muon->pt() +
muon->pfIsolationR04().sumNeutralHadronEt);
532 double isolationPhoton =
533 muon->pt() / (
muon->pt() +
muon->pfIsolationR04().sumPhotonEt);
534 double PFisolationRel = (
muon->pfIsolationR04().sumChargedHadronPt +
535 muon->pfIsolationR04().sumNeutralHadronEt +
536 muon->pfIsolationR04().sumPhotonEt) /
543 fill(
"muonRelIso_", isolationRel);
544 fill(
"muonChHadIso_", isolationChHad);
545 fill(
"muonNeuHadIso_", isolationNeuHad);
546 fill(
"muonPhIso_", isolationPhoton);
547 fill(
"muonPFRelIso_", PFisolationRel);
552 if (mMultIso == 0) mu = *
muon;
558 fill(
"muonMult_", mMult);
559 fill(
"muonMultIso_", mMultIso);
570 std::vector<pat::Jet> correctedJets;
571 unsigned int mult = 0, multBEff = 0, multBPur = 0, multNoBPur = 0,
572 multBVtx = 0, multBCombVtx = 0;
577 vector<double> bJetDiscVal;
578 vector<double> NobJetDiscVal;
583 jet != jets->end(); ++
jet) {
594 correctedJets.push_back(monitorJet);
599 fill(
"jetBDiscEff_", monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
600 if (monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags") > 0.89) ++multBEff;
604 if (monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags") > 0.89) {
606 TaggedJetCand = monitorJet;
607 bJetDiscVal.push_back(monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
609 }
else if (multBPur == 1) {
610 bJetDiscVal.push_back(monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
611 if (bJetDiscVal[1] > bJetDiscVal[0]) TaggedJetCand = monitorJet;
615 if (multNoBPur == 0) {
616 UnTaggedJetCand = monitorJet;
617 NobJetDiscVal.push_back(monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
619 }
else if (multNoBPur == 1) {
620 NobJetDiscVal.push_back(monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
621 if (NobJetDiscVal[1] < NobJetDiscVal[0]) UnTaggedJetCand = monitorJet;
628 if (monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags") > 0.89) ++multBEff;
630 fill(
"jet1BDiscPur_", monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
631 }
else if (mult == 2) {
632 fill(
"jet2BDiscPur_", monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
635 fill(
"jetBDiscPur_", monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
640 fill(
"jet1Pt_", monitorJet.
pt());
641 fill(
"jet1Eta_", monitorJet.
eta());
643 FwdJetCand = monitorJet;
647 fill(
"jet2Pt_", monitorJet.
pt());
648 fill(
"jet2Eta_", monitorJet.
eta());
652 FwdJetCand = monitorJet;
655 fill(
"FwdJetPt_", FwdJetCand.
pt());
656 fill(
"FwdJetEta_", FwdJetCand.
eta());
660 if (multNoBPur == 1 && multBPur == 1) {
662 fill(
"TaggedJetPtEta_", TaggedJetCand.
pt(), TaggedJetCand.
eta());
663 fill(
"UnTaggedJetPtEta_", UnTaggedJetCand.
pt(), UnTaggedJetCand.
eta());
665 fill(
"TaggedJetPt_", TaggedJetCand.
pt());
666 fill(
"TaggedJetEta_", TaggedJetCand.
eta());
667 fill(
"UnTaggedJetPt_", UnTaggedJetCand.
pt());
668 fill(
"UnTaggedJetEta_", UnTaggedJetCand.
eta());
671 fill(
"jetMult_", mult);
672 fill(
"jetMultBEff_", multBEff);
673 fill(
"jetMultBPur_", multBPur);
674 fill(
"jetMultBVtx_", multBVtx);
675 fill(
"jetMultBCombVtx_", multBCombVtx);
689 met_ =
mets_.begin();
690 met_ !=
mets_.end(); ++met_) {
693 mET = *(met->begin());
694 if (met->begin() != met->end()) {
695 unsigned int idx = met_ -
mets_.begin();
696 if (idx == 0)
fill(
"slimmedMETs_", met->begin()->et());
697 if (idx == 1)
fill(
"slimmedMETsNoHF_", met->begin()->et());
698 if (idx == 2)
fill(
"slimmedMETsPuppi_", met->begin()->et());
713 double wMass = eventKinematics.massWBoson(correctedJets);
714 double topMass = eventKinematics.massTopQuark(correctedJets);
715 if (wMass >= 0 && topMass >= 0) {
716 fill(
"massW_", wMass);
717 fill(
"massTop_", topMass);
724 if (
logged_ <=
hists_.find(
"eventLogger_")->second->getNbinsY()) {
731 if (!correctedJets.empty())
732 fill(
"eventLogger_", 3.5,
logged_ + 0.5, correctedJets[0].
pt());
733 if (correctedJets.size() > 1)
734 fill(
"eventLogger_", 4.5,
logged_ + 0.5, correctedJets[1].
pt());
735 if (correctedJets.size() > 2)
736 fill(
"eventLogger_", 5.5,
logged_ + 0.5, correctedJets[2].
pt());
737 if (correctedJets.size() > 3)
738 fill(
"eventLogger_", 6.5,
logged_ + 0.5, correctedJets[3].
pt());
744 if (multBPur != 0 && mMultIso == 1) {
746 double mtW = eventKinematics.tmassWBoson(&mu, mET, TaggedJetCand);
748 double MTT = eventKinematics.tmassTopQuark(&mu, mET, TaggedJetCand);
752 if (multBPur != 0 && eMultIso == 1) {
753 double mtW = eventKinematics.tmassWBoson(&e, mET, TaggedJetCand);
755 double MTT = eventKinematics.tmassTopQuark(&e, mET, TaggedJetCand);
801 std::vector<edm::ParameterSet>
sel =
802 cfg.
getParameter<std::vector<edm::ParameterSet>>(
"selection");
804 for (
unsigned int i = 0;
i < sel.size(); ++
i) {
808 std::unique_ptr<SingleTopTChannelLepton_miniAOD::MonitorEnsemble>(
812 cfg.
getParameter<std::vector<edm::ParameterSet>>(
"selection"),
815 for (std::vector<std::string>::const_iterator selIt =
selectionOrder_.begin();
819 using std::unique_ptr;
821 if (
type ==
"muons") {
825 if (
type ==
"elecs") {
834 if (
type ==
"jets") {
850 selIt->second.second->book(ibooker);
875 unsigned int nJetSteps = -1;
877 for (std::vector<std::string>::const_iterator selIt =
selectionOrder_.begin();
881 if (
type ==
"empty") {
884 if (
type ==
"presel") {
901 if (
type ==
"jets") {
Analysis-level MET class.
std::vector< std::string > selectionOrder_
std::unique_ptr< SelectionStep< pat::Electron > > electronStep_
T getParameter(std::string const &) const
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label
EventAuxiliary const & eventAuxiliary() const override
std::map< std::string, MonitorElement * > hists_
edm::EDGetTokenT< edm::View< pat::Electron > > elecs_gsf_
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
double eta() const final
momentum pseudorapidity
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
std::vector< std::string > triggerPaths_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::vector< ParameterSet > VParameterSet
std::unique_ptr< StringCutObjectSelector< reco::JetID > > jetIDSelect_
extra jetID selection on calo jets
void triggerBinLabels(std::string channel, const std::vector< std::string > labels)
set configurable labels for trigger monitoring histograms
Level verbosity_
verbosity level for booking
def setup(process, global_tag, zero_tesla=False)
double pt() const final
transverse momentum
edm::EDGetTokenT< edm::View< reco::Vertex > > pvs_
std::unique_ptr< StringCutObjectSelector< pat::Muon, true > > muonIso
static const double WMASS
std::map< std::string, std::pair< edm::ParameterSet, std::unique_ptr< SingleTopTChannelLepton_miniAOD::MonitorEnsemble > > > selection_
float bDiscriminator(const std::string &theLabel) const
-— methods for accessing b-tagging info -—
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
LuminosityBlockNumber_t luminosityBlock() const
edm::EDGetTokenT< edm::View< pat::Jet > > jets_
input sources for monitoring
double lowerEdge_
mass window upper and lower edge
std::unique_ptr< StringCutObjectSelector< pat::Electron, true > > elecSelect
std::string jetCorrector_
jetCorrector
void fill(const edm::Event &event, const edm::EventSetup &setup)
fill monitor histograms with electronId and jetCorrections
void analyze(const edm::Event &event, const edm::EventSetup &setup) override
do this during the event loop
std::string selectionStep(const std::string &label)
edm::EDGetTokenT< edm::View< pat::Muon > > muons_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
int logged_
number of logged interesting events
std::unique_ptr< SelectionStep< pat::MET > > metStep_
std::unique_ptr< StringCutObjectSelector< reco::Vertex > > pvSelect_
MonitorElement * book1D(Args &&...args)
std::string objectType(const std::string &label)
Abs< T >::type abs(const T &t)
std::unique_ptr< SelectionStep< pat::Muon > > muonStep_
edm::InputTag beamspot_
beamspot
edm::EDGetTokenT< reco::BeamSpot > beamspot__
std::string muonIso_
extra isolation criterion on muon
std::vector< edm::ParameterSet > sel
std::vector< std::unique_ptr< SelectionStep< pat::Jet > > > jetSteps_
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
std::vector< std::string > triggerPaths_
trigger paths
edm::InputTag vertex_
primary vertex
std::unique_ptr< StringCutObjectSelector< pat::Muon, true > > muonSelect
void book(DQMStore::IBooker &ibooker)
book histograms in subdirectory directory
void setCurrentFolder(const std::string &fullpath)
MonitorElement * book2D(Args &&...args)
std::string elecSelect_
extra selection on electrons
Analysis-level electron class.
Analysis-level calorimeter jet class.
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Templated helper class to allow a selection on a certain object collection.
std::string muonSelect_
extra selection on muons
edm::EDGetTokenT< reco::Vertex > vertex__
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
std::unique_ptr< StringCutObjectSelector< pat::Jet > > jetSelectJet
std::unique_ptr< StringCutObjectSelector< reco::Vertex > > vertexSelect_
string cut selector
std::unique_ptr< StringCutObjectSelector< pat::Electron, true > > elecIso
std::unique_ptr< StringCutObjectSelector< reco::BeamSpot > > beamspotSelect_
string cut selector
bool isUninitialized() const
std::string label_
instance label
std::vector< edm::EDGetTokenT< edm::View< pat::MET > > > mets_
considers a vector of METs
SingleTopTChannelLeptonDQM_miniAOD(const edm::ParameterSet &cfg)
default constructor
edm::EDGetTokenT< edm::TriggerResults > triggerTable__
trigger table
std::unique_ptr< SelectionStep< reco::Vertex > > pvStep_
Analysis-level muon class.
EventNumber_t event() const
std::string elecIso_
extra isolation criterion on electron
static const unsigned int MAXJETS