22 static const double WMASS = 80.4;
24 MonitorEnsemble::MonitorEnsemble(
const char*
label,
46 sources.
getParameter<std::vector<edm::InputTag>>(
"mets"))
145 .getParameter<edm::ParameterSet>(
"combinedSecondaryVertex");
159 triggerExtras.
getParameter<std::vector<std::string>>(
"paths");
212 hists_[
"pvMult_"] = ibooker.
book1D(
"PvMult",
"N_{pvs}", 100, 0., 100.);
214 hists_[
"muonPt_"] = ibooker.
book1D(
"MuonPt",
"pt(#mu)", 50, 0., 250.);
216 hists_[
"muonMult_"] = ibooker.
book1D(
"MuonMult",
"N_{20}(#mu)", 10, 0., 10.);
218 hists_[
"muonMultIso_"] = ibooker.
book1D(
"MuonMultIso",
"N_{Iso}(#mu)", 10, 0., 10.);
220 hists_[
"elecPt_"] = ibooker.
book1D(
"ElecPt",
"pt(e)", 50, 0., 250.);
222 hists_[
"elecMult_"] = ibooker.
book1D(
"ElecMult",
"N_{30}(e)", 10, 0., 10.);
224 hists_[
"elecMultIso_"] = ibooker.
book1D(
"ElecMultIso",
"N_{Iso}(e)", 10, 0., 10.);
226 hists_[
"jetMult_"] = ibooker.
book1D(
"JetMult",
"N_{30}(jet)", 10, 0., 10.);
229 "Eff(trigger)", nPaths, 0., nPaths);
232 "Mon(trigger)", nPaths, 0., nPaths);
234 hists_[
"metCalo_"] = ibooker.
book1D(
"METCalo",
"MET_{Calo}", 50, 0., 200.);
236 hists_[
"massW_"] = ibooker.
book1D(
"MassW",
"M(W)", 60, 0., 300.);
238 hists_[
"massTop_"] = ibooker.
book1D(
"MassTop",
"M(Top)", 50, 0., 500.);
240 hists_[
"MTWm_"] = ibooker.
book1D(
"MTWm",
"M_{T}^{W}(#mu)", 60, 0., 300.);
242 hists_[
"mMTT_"] = ibooker.
book1D(
"mMTT",
"M_{T}^{t}(#mu)", 50, 0., 500.);
245 hists_[
"MTWe_"] = ibooker.
book1D(
"MTWe",
"M_{T}^{W}(e)", 60, 0., 300.);
247 hists_[
"eMTT_"] = ibooker.
book1D(
"eMTT",
"M_{T}^{t}(e)", 50, 0., 500.);
257 hists_[
"muonEta_"] = ibooker.
book1D(
"MuonEta",
"#eta(#mu)", 30, -3., 3.);
259 hists_[
"muonPFRelIso_"] = ibooker.
book1D(
"MuonPFRelIso",
260 "PFIso_{Rel}(#mu)", 50, 0., 1.);
261 hists_[
"muonRelIso_"] = ibooker.
book1D(
"MuonRelIso",
"Iso_{Rel}(#mu)", 50, 0., 1.);
264 hists_[
"elecEta_"] = ibooker.
book1D(
"ElecEta",
"#eta(e)", 30, -3., 3.);
266 hists_[
"elecRelIso_"] = ibooker.
book1D(
"ElecRelIso",
"Iso_{Rel}(e)", 50, 0., 1.);
267 hists_[
"elecPFRelIso_"] = ibooker.
book1D(
"ElecPFRelIso",
268 "PFIso_{Rel}(e)", 50, 0., 1.);
280 hists_[
"jet1Eta_"] = ibooker.
book1D(
"Jet1Eta",
"#eta (jet1)", 50, -5., 5.);
282 hists_[
"jet2Eta_"] = ibooker.
book1D(
"Jet2Eta",
"#eta (jet2)", 50, -5., 5.);
285 hists_[
"jet1Pt_"] = ibooker.
book1D(
"Jet1Pt",
"pt_{L2L3}(jet1)", 60, 0., 300.);
287 hists_[
"jet2Pt_"] = ibooker.
book1D(
"Jet2Pt",
"pt_{L2L3}(jet2)", 60, 0., 300.);
290 hists_[
"TaggedJetEta_"] = ibooker.
book1D(
"TaggedJetEta",
291 "#eta (Tagged jet)", 50, -5., 5.);
293 "pt_{L2L3}(Tagged jet)", 60, 0., 300.);
296 hists_[
"UnTaggedJetEta_"] = ibooker.
book1D(
"UnTaggedJetEta",
297 "#eta (UnTagged jet)", 50, -5., 5.);
298 hists_[
"UnTaggedJetPt_"] = ibooker.
book1D(
"UnTaggedJetPt",
299 "pt_{L2L3}(UnTagged jet)", 60, 0., 300.);
302 hists_[
"FwdJetEta_"] = ibooker.
book1D(
"FwdJetEta",
"#eta (Fwd jet)", 50, -5., 5.);
304 "pt_{L2L3}(Fwd jet)", 60, 0., 300.);
307 hists_[
"TaggedJetPtEta_"] = ibooker.
book2D(
"TaggedJetPt_Eta",
308 "(pt vs #eta)_{L2L3}(Tagged jet)", 60, 0., 300., 50, -5., 5.);
311 hists_[
"UnTaggedJetPtEta_"] = ibooker.
book2D(
"UnTaggedJetPt_Eta",
312 "(pt vs #eta)_{L2L3}(UnTagged jet)", 60, 0., 300., 50, -5., 5.);
315 hists_[
"metTC_"] = ibooker.
book1D(
"METTC",
"MET_{TC}", 50, 0., 200.);
317 hists_[
"metPflow_"] = ibooker.
book1D(
"METPflow",
"MET_{Pflow}", 50, 0., 200.);
320 hists_[
"muonDelZ_"] = ibooker.
book1D(
"MuonDelZ",
"d_{z}(#mu)", 50, -25., 25.);
323 "d_{xy}(#mu)", 50, -0.1, 0.1, 50, -0.1, 0.1);
326 hists_[
"muonDelXY_"]->setAxisTitle(
"x [cm]", 1);
327 hists_[
"muonDelXY_"]->setAxisTitle(
"y [cm]", 2);
334 hists_[
"muonChHadIso_"] = ibooker.
book1D(
"MuonChHadIso",
335 "Iso_{ChHad}(#mu)", 100, 0., 1.);
337 hists_[
"muonNeuHadIso_"] = ibooker.
book1D(
"MuonNeuHadIso",
338 "Iso_{NeuHad}(#mu)", 100, 0., 1.);
340 hists_[
"muonPhIso_"] = ibooker.
book1D(
"MuonPhIso",
"Iso_{Ph}(#mu)", 100, 0., 1.);
343 hists_[
"elecChHadIso_"] = ibooker.
book1D(
"ElecChHadIso",
344 "Iso_{ChHad}(e)", 100, 0., 1.);
346 hists_[
"elecNeuHadIso_"] = ibooker.
book1D(
"ElecNeuHadIso",
347 "Iso_{NeuHad}(e)", 100, 0., 1.);
349 hists_[
"elecPhIso_"] = ibooker.
book1D(
"ElecPhIso",
"Iso_{Ph}(e)", 100, 0., 1.);
355 hists_[
"jetMultBCombVtx_"] = ibooker.
book1D(
"JetMultBCombVtx",
356 "N_{30}(b/CSV)", 10, 0., 10.);
358 hists_[
"jetBDiscCombVtx_"] = ibooker.
book1D(
"JetBDiscCombVtx",
359 "Disc_{b/CSV}(Jet)", 60, -1., 2.);
361 hists_[
"jet1BDiscCombVtx_"] = ibooker.
book1D(
"Jet1BDiscCombVtx",
362 "Disc_{b/CSV}(Jet1)", 60, -1., 2.);
364 hists_[
"jet2BDiscCombVtx_"] = ibooker.
book1D(
"Jet2BDiscCombVtx",
365 "Disc_{b/CSV}(Jet2)", 60, -1., 2.);
368 hists_[
"jet1PtRaw_"] = ibooker.
book1D(
"Jet1PtRaw",
"pt_{Raw}(jet1)", 60, 0., 300.);
370 hists_[
"jet2PtRaw_"] = ibooker.
book1D(
"Jet2PtRaw",
"pt_{Raw}(jet2)", 60, 0., 300.);
374 "Logged Events", 9, 0., 9., 10, 0., 10.);
377 hists_[
"eventLogger_"]->getTH1()->SetOption(
"TEXT");
378 hists_[
"eventLogger_"]->setBinLabel(1,
"Run", 1);
379 hists_[
"eventLogger_"]->setBinLabel(2,
"Block", 1);
380 hists_[
"eventLogger_"]->setBinLabel(3,
"Event", 1);
381 hists_[
"eventLogger_"]->setBinLabel(4,
"pt_{L2L3}(jet1)", 1);
382 hists_[
"eventLogger_"]->setBinLabel(5,
"pt_{L2L3}(jet2)", 1);
383 hists_[
"eventLogger_"]->setBinLabel(6,
"pt_{L2L3}(jet3)", 1);
384 hists_[
"eventLogger_"]->setBinLabel(7,
"pt_{L2L3}(jet4)", 1);
385 hists_[
"eventLogger_"]->setBinLabel(8,
"M_{W}", 1);
386 hists_[
"eventLogger_"]->setBinLabel(9,
"M_{Top}", 1);
387 hists_[
"eventLogger_"]->setAxisTitle(
"logged evts", 2);
410 unsigned int pvMult = 0;
412 pv != pvs->end(); ++
pv) {
415 fill(
"pvMult_", pvMult);
444 unsigned int eMult = 0, eMultIso = 0;
445 std::vector<const reco::GsfElectron*> isoElecs;
448 unsigned int idx_gsf = 0;
449 for (elec_it = elecs->begin(); elec_it != elecs->end(); ++elec_it) {
450 if (elec_it->gsfElectronRef().isNull())
continue;
453 if (elec->gsfTrack().
isNull())
continue;
459 double isolationRel =
460 (elec->dr03TkSumPt() + elec->dr03EcalRecHitSumEt() +
461 elec->dr03HcalTowerSumEt()) /
464 double isolationChHad =
466 (elec->pt() + elec->pfIsolationVariables().sumChargedHadronPt);
467 double isolationNeuHad =
469 (elec->pt() + elec->pfIsolationVariables().sumNeutralHadronEt);
470 double isolationPhoton =
472 (elec->pt() + elec->pfIsolationVariables().sumPhotonEt);
473 double el_ChHadIso = elec->pfIsolationVariables().sumChargedHadronPt;
474 double el_NeHadIso = elec->pfIsolationVariables().sumNeutralHadronEt;
475 double el_PhIso = elec->pfIsolationVariables().sumPhotonEt;
476 double PFisolationRel =
478 max(0., el_NeHadIso + el_PhIso -
479 0.5 * elec->pfIsolationVariables().sumPUPt)) /
484 fill(
"elecPt_", elec->pt());
485 fill(
"elecEta_", elec->eta());
486 fill(
"elecRelIso_", isolationRel);
487 fill(
"elecPFRelIso_", PFisolationRel);
488 fill(
"elecChHadIso_", isolationChHad);
489 fill(
"elecNeuHadIso_", isolationNeuHad);
490 fill(
"elecPhIso_", isolationPhoton);
496 if (eMultIso == 0) e = *elec;
497 isoElecs.push_back(&(*elec));
505 fill(
"elecMult_", eMult);
506 fill(
"elecMultIso_", eMultIso);
517 unsigned int mMult = 0, mMultIso = 0;
525 for (muonit = muons->begin(); muonit != muons->end();
530 if (muonit->muonRef().isNull())
continue;
533 if (muon->innerTrack().
isNull())
continue;
536 if (muon->isGlobalMuon()) {
537 fill(
"muonDelZ_", muon->globalTrack()->vz());
538 fill(
"muonDelXY_", muon->globalTrack()->vx(), muon->globalTrack()->vy());
543 double isolationRel =
544 (muon->isolationR03().sumPt + muon->isolationR03().emEt +
545 muon->isolationR03().hadEt) /
547 double isolationChHad =
549 (muon->pt() + muon->pfIsolationR04().sumChargedHadronPt);
550 double isolationNeuHad =
552 (muon->pt() + muon->pfIsolationR04().sumNeutralHadronEt);
553 double isolationPhoton =
554 muon->pt() / (muon->pt() + muon->pfIsolationR04().sumPhotonEt);
555 double PFisolationRel = (muon->pfIsolationR04().sumChargedHadronPt +
556 muon->pfIsolationR04().sumNeutralHadronEt +
557 muon->pfIsolationR04().sumPhotonEt) /
562 fill(
"muonPt_", muon->pt());
563 fill(
"muonEta_", muon->eta());
564 fill(
"muonRelIso_", isolationRel);
565 fill(
"muonChHadIso_", isolationChHad);
566 fill(
"muonNeuHadIso_", isolationNeuHad);
567 fill(
"muonPhIso_", isolationPhoton);
568 fill(
"muonPFRelIso_", PFisolationRel);
573 if (mMultIso == 0) mu = *
muon;
579 fill(
"muonMult_", mMult);
580 fill(
"muonMultIso_", mMultIso);
606 <<
"-----------------------------------------------------------------" 607 "-------------------- \n" 608 <<
" No JetCorrectionsRecord available from EventSetup:\n" 609 <<
" - Jets will not be corrected.\n" 610 <<
" - If you want to change this add the following lines to your " 613 <<
" ## load jet corrections\n" 615 "process.load(\"JetMETCorrections.Configuration." 616 "JetCorrectionServicesAllAlgos_cff\") \n" 617 <<
" process.prefer(\"ak5CaloL2L3\")\n" 619 <<
"-----------------------------------------------------------------" 620 "-------------------- \n";
625 std::vector<reco::Jet> correctedJets;
626 unsigned int mult = 0,
627 multBCombVtx = 0,multNoBCombVtx = 0;
637 vector<double> bJetDiscVal;
638 vector<double> NobJetDiscVal;
643 jet != jets->end(); ++
jet) {
645 unsigned int idx =
jet - jets->begin();
646 if (dynamic_cast<const reco::CaloJet*>(&*
jet)) {
648 dynamic_cast<const reco::CaloJet*>(jets->refAt(idx).get())) {
649 if (!(*
jetIDSelect_)((*jetID)[jets->refAt(idx)]))
continue;
654 if (dynamic_cast<const reco::CaloJet*>(&*
jet)) {
662 }
else if (dynamic_cast<const reco::PFJet*>(&*
jet)) {
681 correctedJets.push_back(monitorJet);
689 if (multBCombVtx == 0) {
690 TaggedJetCand = monitorJet;
692 bJetDiscVal.push_back((*btagCombVtx)[jetRef]);
694 }
else if (multBCombVtx == 1) {
695 bJetDiscVal.push_back((*btagCombVtx)[jetRef]);
696 if (bJetDiscVal[1] > bJetDiscVal[0]) TaggedJetCand = monitorJet;
701 if (multNoBCombVtx == 0) {
702 UnTaggedJetCand = monitorJet;
703 NobJetDiscVal.push_back((*btagCombVtx)[jetRef]);
705 }
else if (multNoBCombVtx == 1) {
706 NobJetDiscVal.push_back((*btagCombVtx)[jetRef]);
707 if (NobJetDiscVal[1] < NobJetDiscVal[0]) UnTaggedJetCand = monitorJet;
717 fill(
"jet1BDiscCombVtx_", (*btagCombVtx)[jetRef]);
718 }
else if (mult == 2) {
719 fill(
"jet2BDiscCombVtx_", (*btagCombVtx)[jetRef]);
722 fill(
"jetBDiscCombVtx_", (*btagCombVtx)[jetRef]);
726 fill(
"jet1Pt_", monitorJet.
pt());
727 fill(
"jet1Eta_", monitorJet.
eta());
729 FwdJetCand = monitorJet;
733 fill(
"jet2Pt_", monitorJet.
pt());
734 fill(
"jet2Eta_", monitorJet.
eta());
738 FwdJetCand = monitorJet;
741 fill(
"FwdJetPt_", FwdJetCand.
pt());
742 fill(
"FwdJetEta_", FwdJetCand.
eta());
746 if (multNoBCombVtx == 1 && multBCombVtx == 1) {
748 fill(
"TaggedJetPtEta_", TaggedJetCand.
pt(), TaggedJetCand.
eta());
749 fill(
"UnTaggedJetPtEta_", UnTaggedJetCand.
pt(), UnTaggedJetCand.
eta());
751 fill(
"TaggedJetPt_", TaggedJetCand.
pt());
752 fill(
"TaggedJetEta_", TaggedJetCand.
eta());
753 fill(
"UnTaggedJetPt_", UnTaggedJetCand.
pt());
754 fill(
"UnTaggedJetEta_", UnTaggedJetCand.
eta());
757 fill(
"jetMult_", mult);
758 fill(
"jetMultBCombVtx_", multBCombVtx);
771 met_ =
mets_.begin();
772 met_ !=
mets_.end(); ++met_) {
775 if (met->begin() != met->end()) {
776 unsigned int idx = met_ -
mets_.begin();
778 fill(
"metCalo_", met->begin()->et());
781 fill(
"metTC_", met->begin()->et());
784 fill(
"metPflow_", met->begin()->et());
785 mET = *(met->begin());
799 Calculate eventKinematics(MAXJETS, WMASS);
801 double topMass = eventKinematics.
massTopQuark(correctedJets);
802 if (wMass >= 0 && topMass >= 0) {
803 fill(
"massW_", wMass);
804 fill(
"massTop_", topMass);
811 if (
logged_ <=
hists_.find(
"eventLogger_")->second->getNbinsY()) {
818 if (correctedJets.size() > 0)
819 fill(
"eventLogger_", 3.5,
logged_ + 0.5, correctedJets[0].
pt());
820 if (correctedJets.size() > 1)
821 fill(
"eventLogger_", 4.5,
logged_ + 0.5, correctedJets[1].
pt());
822 if (correctedJets.size() > 2)
823 fill(
"eventLogger_", 5.5,
logged_ + 0.5, correctedJets[2].
pt());
824 if (correctedJets.size() > 3)
825 fill(
"eventLogger_", 6.5,
logged_ + 0.5, correctedJets[3].
pt());
831 if (multBCombVtx != 0 && mMultIso == 1) {
833 double mtW = eventKinematics.
tmassWBoson(&mu, mET, TaggedJetCand);
835 double MTT = eventKinematics.
tmassTopQuark(&mu, mET, TaggedJetCand);
839 if (multBCombVtx != 0 && eMultIso == 1) {
840 double mtW = eventKinematics.
tmassWBoson(&e, mET, TaggedJetCand);
842 double MTT = eventKinematics.
tmassTopQuark(&e, mET, TaggedJetCand);
891 std::vector<edm::ParameterSet>
sel =
892 cfg.
getParameter<std::vector<edm::ParameterSet>>(
"selection");
894 for (
unsigned int i = 0;
i < sel.size(); ++
i) {
898 std::unique_ptr<SingleTopTChannelLepton::MonitorEnsemble>(
902 cfg.
getParameter<std::vector<edm::ParameterSet>>(
"selection"),
905 for (std::vector<std::string>::const_iterator selIt =
selectionOrder_.begin();
909 using std::unique_ptr;
911 if (
type ==
"muons") {
915 if (
type ==
"muons/pf") {
919 if (
type ==
"elecs") {
923 if (
type ==
"elecs/pf") {
931 if (
type ==
"jets") {
936 if (
type ==
"jets/pf") {
941 if (
type ==
"jets/calo") {
957 selIt->second.second->book(ibooker);
982 unsigned int nJetSteps = -1;
983 unsigned int nPFJetSteps = -1;
984 unsigned int nCaloJetSteps = -1;
985 for (std::vector<std::string>::const_iterator selIt =
selectionOrder_.begin();
989 if (
type ==
"empty") {
992 if (
type ==
"presel") {
1026 if (
type ==
"jets") {
1036 if (
type ==
"jets/pf") {
1046 if (
type ==
"jets/calo") {
std::vector< std::string > selectionOrder_
std::unique_ptr< StringCutObjectSelector< reco::PFJet > > jetSelectPF
std::map< std::string, MonitorElement * > hists_
std::string objectType(const std::string &label)
T getParameter(std::string const &) const
virtual double pt() const final
transverse momentum
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
std::unique_ptr< StringCutObjectSelector< reco::CaloJet > > jetSelectCalo
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
Jets made from CaloTowers.
virtual void scaleEnergy(double fScale)
scale energy of the jet
std::vector< std::string > triggerPaths_
trigger paths
Level verbosity_
verbosity level for booking
std::unique_ptr< StringCutObjectSelector< reco::PFCandidate, true > > elecSelect
static const double WMASS
virtual double eta() const final
momentum pseudorapidity
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::unique_ptr< SelectionStep< reco::Vertex > > PvStep
std::vector< ParameterSet > VParameterSet
Base class for all types of Jets.
int logged_
number of logged interesting events
std::vector< std::unique_ptr< SelectionStep< reco::CaloJet > > > CaloJetSteps
std::vector< std::unique_ptr< SelectionStep< reco::Jet > > > JetSteps
double massTopQuark(const std::vector< reco::Jet > &jets)
calculate t-quark mass estimate
edm::EDGetTokenT< reco::JetTagCollection > btagCombVtx_
def setup(process, global_tag, zero_tesla=False)
edm::EDGetTokenT< edm::TriggerResults > triggerTable__
trigger table
edm::InputTag beamspot_
beamspot
std::string muonIso_
extra isolation criterion on muon
std::vector< std::string > triggerPaths_
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
std::string muonSelect_
extra selection on muons
edm::EDGetTokenT< edm::View< reco::PFCandidate > > muons_
Jets made from PFObjects.
double massWBoson(const std::vector< reco::Jet > &jets)
calculate W boson mass estimate
SingleTopTChannelLeptonDQM(const edm::ParameterSet &cfg)
default constructor
LuminosityBlockNumber_t luminosityBlock() const
const eventsetup::EventSetupRecord * find(const eventsetup::EventSetupRecordKey &) const
edm::InputTag vertex_
primary vertex
Helper class for the calculation of a top and a W boson mass estime.
std::string elecSelect_
extra selection on electrons
double lowerEdge_
mass window upper and lower edge
void triggerBinLabels(std::string channel, const std::vector< std::string > labels)
set configurable labels for trigger monitoring histograms
std::vector< edm::ParameterSet > sel
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
edm::EDGetTokenT< edm::View< reco::GsfElectron > > elecs_gsf_
MonitorElement * book1D(Args &&...args)
Abs< T >::type abs(const T &t)
std::unique_ptr< StringCutObjectSelector< reco::Vertex > > pvSelect_
std::unique_ptr< StringCutObjectSelector< reco::PFCandidate, true > > muonIso
double tmassTopQuark(reco::RecoCandidate *lep, const reco::MET &met, const reco::Jet &b)
calculate top quark transverse mass estimate
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::unique_ptr< StringCutObjectSelector< reco::JetID > > jetIDSelect_
extra jetID selection on calo jets
bool isNull() const
Checks for null.
virtual double correction(const LorentzVector &fJet) const =0
get correction using Jet information only
std::unique_ptr< StringCutObjectSelector< reco::PFCandidate, true > > elecIso
std::unique_ptr< SelectionStep< reco::PFCandidate > > PFElectronStep
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label
EventAuxiliary const & eventAuxiliary() const
std::string selectionStep(const std::string &label)
double tmassWBoson(reco::RecoCandidate *lep, const reco::MET &met, const reco::Jet &b)
calculate W boson transverse mass estimate
void setCurrentFolder(const std::string &fullpath)
MonitorElement * book2D(Args &&...args)
std::unique_ptr< SelectionStep< reco::GsfElectron > > ElectronStep
edm::EDGetTokenT< edm::View< reco::Vertex > > pvs_
static const JetCorrector * getJetCorrector(const std::string &fName, const edm::EventSetup &fSetup)
retrieve corrector from the event setup. troughs exception if something is missing ...
edm::EDGetTokenT< edm::View< reco::PFCandidate > > elecs_
std::unique_ptr< SelectionStep< reco::MET > > METStep
static const unsigned int MAXJETS
std::vector< edm::EDGetTokenT< edm::View< reco::MET > > > mets_
considers a vector of METs
Templated helper class to allow a selection on a certain object collection.
void fill(const edm::Event &event, const edm::EventSetup &setup)
fill monitor histograms with electronId and jetCorrections
edm::EDGetTokenT< edm::View< reco::Jet > > jets_
input sources for monitoring
std::unique_ptr< StringCutObjectSelector< reco::Vertex > > vertexSelect_
string cut selector
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
edm::EDGetTokenT< reco::Vertex > vertex__
static EventSetupRecordKey makeKey()
void book(DQMStore::IBooker &ibooker)
book histograms in subdirectory directory
edm::EDGetTokenT< reco::BeamSpot > beamspot__
std::unique_ptr< StringCutObjectSelector< reco::BeamSpot > > beamspotSelect_
string cut selector
std::map< std::string, std::pair< edm::ParameterSet, std::unique_ptr< SingleTopTChannelLepton::MonitorEnsemble > > > selection_
bool isUninitialized() const
std::string jetCorrector_
jetCorrector
virtual void analyze(const edm::Event &event, const edm::EventSetup &setup) override
do this during the event loop
std::vector< std::unique_ptr< SelectionStep< reco::PFJet > > > PFJetSteps
std::unique_ptr< SelectionStep< reco::Muon > > MuonStep
EventNumber_t event() const
std::unique_ptr< SelectionStep< reco::PFCandidate > > PFMuonStep
std::string label_
instance label
std::unique_ptr< StringCutObjectSelector< reco::PFCandidate, true > > muonSelect
std::string elecIso_
extra isolation criterion on electron
std::unique_ptr< StringCutObjectSelector< reco::Jet > > jetSelectJet