15 namespace SingleTopTChannelLepton {
22 static const double WMASS = 80.4;
24 MonitorEnsemble::MonitorEnsemble(
const char*
label,
46 sources.
getParameter<std::vector<edm::InputTag>>(
"mets"))
144 .getParameter<edm::ParameterSet>(
"trackCountingEff");
150 .getParameter<edm::ParameterSet>(
"trackCountingPur");
153 btagPurWP_ = btagPur.getParameter<
double>(
"workingPoint");
156 .getParameter<edm::ParameterSet>(
"secondaryVertex");
159 btagVtxWP_ = btagVtx.getParameter<
double>(
"workingPoint");
162 .getParameter<edm::ParameterSet>(
"combinedSecondaryVertex");
165 btagCombVtxWP_ = btagCombVtx.getParameter<
double>(
"workingPoint");
176 triggerExtras.
getParameter<std::vector<std::string>>(
"paths");
231 hists_[
"pvMult_"] = ibooker.
book1D(
"PvMult",
"N_{pvs}", 100, 0., 100.);
233 hists_[
"muonPt_"] = ibooker.
book1D(
"MuonPt",
"pt(#mu)", 50, 0., 250.);
235 hists_[
"muonMult_"] = ibooker.
book1D(
"MuonMult",
"N_{20}(#mu)", 10, 0., 10.);
237 hists_[
"muonMultIso_"] = ibooker.
book1D(
"MuonMultIso",
"N_{Iso}(#mu)", 10, 0., 10.);
239 hists_[
"elecPt_"] = ibooker.
book1D(
"ElecPt",
"pt(e)", 50, 0., 250.);
241 hists_[
"elecMult_"] = ibooker.
book1D(
"ElecMult",
"N_{30}(e)", 10, 0., 10.);
243 hists_[
"elecMultIso_"] = ibooker.
book1D(
"ElecMultIso",
"N_{Iso}(e)", 10, 0., 10.);
245 hists_[
"jetMult_"] = ibooker.
book1D(
"JetMult",
"N_{30}(jet)", 10, 0., 10.);
248 "Eff(trigger)", nPaths, 0., nPaths);
251 "Mon(trigger)", nPaths, 0., nPaths);
253 hists_[
"metCalo_"] = ibooker.
book1D(
"METCalo",
"MET_{Calo}", 50, 0., 200.);
255 hists_[
"massW_"] = ibooker.
book1D(
"MassW",
"M(W)", 60, 0., 300.);
257 hists_[
"massTop_"] = ibooker.
book1D(
"MassTop",
"M(Top)", 50, 0., 500.);
259 hists_[
"MTWm_"] = ibooker.
book1D(
"MTWm",
"M_{T}^{W}(#mu)", 60, 0., 300.);
261 hists_[
"mMTT_"] = ibooker.
book1D(
"mMTT",
"M_{T}^{t}(#mu)", 50, 0., 500.);
264 hists_[
"MTWe_"] = ibooker.
book1D(
"MTWe",
"M_{T}^{W}(e)", 60, 0., 300.);
266 hists_[
"eMTT_"] = ibooker.
book1D(
"eMTT",
"M_{T}^{t}(e)", 50, 0., 500.);
276 hists_[
"muonEta_"] = ibooker.
book1D(
"MuonEta",
"#eta(#mu)", 30, -3., 3.);
278 hists_[
"muonPFRelIso_"] = ibooker.
book1D(
"MuonPFRelIso",
279 "PFIso_{Rel}(#mu)", 50, 0., 1.);
280 hists_[
"muonRelIso_"] = ibooker.
book1D(
"MuonRelIso",
"Iso_{Rel}(#mu)", 50, 0., 1.);
283 hists_[
"elecEta_"] = ibooker.
book1D(
"ElecEta",
"#eta(e)", 30, -3., 3.);
285 hists_[
"elecRelIso_"] = ibooker.
book1D(
"ElecRelIso",
"Iso_{Rel}(e)", 50, 0., 1.);
286 hists_[
"elecPFRelIso_"] = ibooker.
book1D(
"ElecPFRelIso",
287 "PFIso_{Rel}(e)", 50, 0., 1.);
292 "N_{30}(b/eff)", 10, 0., 10.);
296 "Disc_{b/eff}(jet)", 100, 0., 10.);
299 hists_[
"jet1Eta_"] = ibooker.
book1D(
"Jet1Eta",
"#eta (jet1)", 50, -5., 5.);
301 hists_[
"jet2Eta_"] = ibooker.
book1D(
"Jet2Eta",
"#eta (jet2)", 50, -5., 5.);
304 hists_[
"jet1Pt_"] = ibooker.
book1D(
"Jet1Pt",
"pt_{L2L3}(jet1)", 60, 0., 300.);
306 hists_[
"jet2Pt_"] = ibooker.
book1D(
"Jet2Pt",
"pt_{L2L3}(jet2)", 60, 0., 300.);
309 hists_[
"TaggedJetEta_"] = ibooker.
book1D(
"TaggedJetEta",
310 "#eta (Tagged jet)", 50, -5., 5.);
312 "pt_{L2L3}(Tagged jet)", 60, 0., 300.);
315 hists_[
"UnTaggedJetEta_"] = ibooker.
book1D(
"UnTaggedJetEta",
316 "#eta (UnTagged jet)", 50, -5., 5.);
317 hists_[
"UnTaggedJetPt_"] = ibooker.
book1D(
"UnTaggedJetPt",
318 "pt_{L2L3}(UnTagged jet)", 60, 0., 300.);
321 hists_[
"FwdJetEta_"] = ibooker.
book1D(
"FwdJetEta",
"#eta (Fwd jet)", 50, -5., 5.);
323 "pt_{L2L3}(Fwd jet)", 60, 0., 300.);
326 hists_[
"TaggedJetPtEta_"] = ibooker.
book2D(
"TaggedJetPt_Eta",
327 "(pt vs #eta)_{L2L3}(Tagged jet)", 60, 0., 300., 50, -5., 5.);
330 hists_[
"UnTaggedJetPtEta_"] = ibooker.
book2D(
"UnTaggedJetPt_Eta",
331 "(pt vs #eta)_{L2L3}(UnTagged jet)", 60, 0., 300., 50, -5., 5.);
334 hists_[
"metTC_"] = ibooker.
book1D(
"METTC",
"MET_{TC}", 50, 0., 200.);
336 hists_[
"metPflow_"] = ibooker.
book1D(
"METPflow",
"MET_{Pflow}", 50, 0., 200.);
339 hists_[
"muonDelZ_"] = ibooker.
book1D(
"MuonDelZ",
"d_{z}(#mu)", 50, -25., 25.);
342 "d_{xy}(#mu)", 50, -0.1, 0.1, 50, -0.1, 0.1);
345 hists_[
"muonDelXY_"]->setAxisTitle(
"x [cm]", 1);
346 hists_[
"muonDelXY_"]->setAxisTitle(
"y [cm]", 2);
353 hists_[
"muonChHadIso_"] = ibooker.
book1D(
"MuonChHadIso",
354 "Iso_{ChHad}(#mu)", 100, 0., 1.);
356 hists_[
"muonNeuHadIso_"] = ibooker.
book1D(
"MuonNeuHadIso",
357 "Iso_{NeuHad}(#mu)", 100, 0., 1.);
359 hists_[
"muonPhIso_"] = ibooker.
book1D(
"MuonPhIso",
"Iso_{Ph}(#mu)", 100, 0., 1.);
362 hists_[
"elecChHadIso_"] = ibooker.
book1D(
"ElecChHadIso",
363 "Iso_{ChHad}(e)", 100, 0., 1.);
365 hists_[
"elecNeuHadIso_"] = ibooker.
book1D(
"ElecNeuHadIso",
366 "Iso_{NeuHad}(e)", 100, 0., 1.);
368 hists_[
"elecPhIso_"] = ibooker.
book1D(
"ElecPhIso",
"Iso_{Ph}(e)", 100, 0., 1.);
373 "N_{30}(b/pur)", 10, 0., 10.);
376 "Disc_{b/pur}(Jet)", 200, -10., 10.);
378 hists_[
"jet1BDiscPur_"] = ibooker.
book1D(
"Jet1BDiscPur",
379 "Disc_{b/pur}(Jet1)", 200, -10., 10.);
381 hists_[
"jet2BDiscPur_"] = ibooker.
book1D(
"Jet2BDiscPur",
382 "Disc_{b/pur}(Jet2)", 200, -10., 10.);
386 "N_{30}(b/vtx)", 10, 0., 10.);
389 "Disc_{b/vtx}(Jet)", 35, -1., 6.);
393 hists_[
"jetMultBCombVtx_"] = ibooker.
book1D(
"JetMultBCombVtx",
394 "N_{30}(b/CSV)", 10, 0., 10.);
396 hists_[
"jetBDiscCombVtx_"] = ibooker.
book1D(
"JetBDiscCombVtx",
397 "Disc_{b/CSV}(Jet)", 60, -1., 2.);
399 hists_[
"jet1BDiscCombVtx_"] = ibooker.
book1D(
"Jet1BDiscCombVtx",
400 "Disc_{b/CSV}(Jet1)", 60, -1., 2.);
402 hists_[
"jet2BDiscCombVtx_"] = ibooker.
book1D(
"Jet2BDiscCombVtx",
403 "Disc_{b/CSV}(Jet2)", 60, -1., 2.);
406 hists_[
"jet1PtRaw_"] = ibooker.
book1D(
"Jet1PtRaw",
"pt_{Raw}(jet1)", 60, 0., 300.);
408 hists_[
"jet2PtRaw_"] = ibooker.
book1D(
"Jet2PtRaw",
"pt_{Raw}(jet2)", 60, 0., 300.);
412 "Logged Events", 9, 0., 9., 10, 0., 10.);
415 hists_[
"eventLogger_"]->getTH1()->SetOption(
"TEXT");
416 hists_[
"eventLogger_"]->setBinLabel(1,
"Run", 1);
417 hists_[
"eventLogger_"]->setBinLabel(2,
"Block", 1);
418 hists_[
"eventLogger_"]->setBinLabel(3,
"Event", 1);
419 hists_[
"eventLogger_"]->setBinLabel(4,
"pt_{L2L3}(jet1)", 1);
420 hists_[
"eventLogger_"]->setBinLabel(5,
"pt_{L2L3}(jet2)", 1);
421 hists_[
"eventLogger_"]->setBinLabel(6,
"pt_{L2L3}(jet3)", 1);
422 hists_[
"eventLogger_"]->setBinLabel(7,
"pt_{L2L3}(jet4)", 1);
423 hists_[
"eventLogger_"]->setBinLabel(8,
"M_{W}", 1);
424 hists_[
"eventLogger_"]->setBinLabel(9,
"M_{Top}", 1);
425 hists_[
"eventLogger_"]->setAxisTitle(
"logged evts", 2);
448 unsigned int pvMult = 0;
450 pv != pvs->end(); ++
pv) {
453 fill(
"pvMult_", pvMult);
482 unsigned int eMult = 0, eMultIso = 0;
483 std::vector<const reco::GsfElectron*> isoElecs;
486 unsigned int idx_gsf = 0;
487 for (elec_it = elecs->begin(); elec_it != elecs->end(); ++elec_it) {
488 if (elec_it->gsfElectronRef().isNull())
continue;
491 if (elec->gsfTrack().
isNull())
continue;
497 double isolationRel =
498 (elec->dr03TkSumPt() + elec->dr03EcalRecHitSumEt() +
499 elec->dr03HcalTowerSumEt()) /
502 double isolationChHad =
504 (elec->pt() + elec->pfIsolationVariables().sumChargedHadronPt);
505 double isolationNeuHad =
507 (elec->pt() + elec->pfIsolationVariables().sumNeutralHadronEt);
508 double isolationPhoton =
510 (elec->pt() + elec->pfIsolationVariables().sumPhotonEt);
511 double el_ChHadIso = elec->pfIsolationVariables().sumChargedHadronPt;
512 double el_NeHadIso = elec->pfIsolationVariables().sumNeutralHadronEt;
513 double el_PhIso = elec->pfIsolationVariables().sumPhotonEt;
514 double PFisolationRel =
516 max(0., el_NeHadIso + el_PhIso -
517 0.5 * elec->pfIsolationVariables().sumPUPt)) /
522 fill(
"elecPt_", elec->pt());
523 fill(
"elecEta_", elec->eta());
524 fill(
"elecRelIso_", isolationRel);
525 fill(
"elecPFRelIso_", PFisolationRel);
526 fill(
"elecChHadIso_", isolationChHad);
527 fill(
"elecNeuHadIso_", isolationNeuHad);
528 fill(
"elecPhIso_", isolationPhoton);
534 if (eMultIso == 0) e = *elec;
535 isoElecs.push_back(&(*elec));
543 fill(
"elecMult_", eMult);
544 fill(
"elecMultIso_", eMultIso);
555 unsigned int mMult = 0, mMultIso = 0;
563 for (muonit = muons->begin(); muonit != muons->end();
568 if (muonit->muonRef().isNull())
continue;
571 if (muon->innerTrack().
isNull())
continue;
574 if (muon->isGlobalMuon()) {
575 fill(
"muonDelZ_", muon->globalTrack()->vz());
576 fill(
"muonDelXY_", muon->globalTrack()->vx(), muon->globalTrack()->vy());
581 double isolationRel =
582 (muon->isolationR03().sumPt + muon->isolationR03().emEt +
583 muon->isolationR03().hadEt) /
585 double isolationChHad =
587 (muon->pt() + muon->pfIsolationR04().sumChargedHadronPt);
588 double isolationNeuHad =
590 (muon->pt() + muon->pfIsolationR04().sumNeutralHadronEt);
591 double isolationPhoton =
592 muon->pt() / (muon->pt() + muon->pfIsolationR04().sumPhotonEt);
593 double PFisolationRel = (muon->pfIsolationR04().sumChargedHadronPt +
594 muon->pfIsolationR04().sumNeutralHadronEt +
595 muon->pfIsolationR04().sumPhotonEt) /
600 fill(
"muonPt_", muon->pt());
601 fill(
"muonEta_", muon->eta());
602 fill(
"muonRelIso_", isolationRel);
603 fill(
"muonChHadIso_", isolationChHad);
604 fill(
"muonNeuHadIso_", isolationNeuHad);
605 fill(
"muonPhIso_", isolationPhoton);
606 fill(
"muonPFRelIso_", PFisolationRel);
611 if (mMultIso == 0) mu = *
muon;
617 fill(
"muonMult_", mMult);
618 fill(
"muonMultIso_", mMultIso);
646 <<
"-----------------------------------------------------------------"
647 "-------------------- \n"
648 <<
" No JetCorrectionsRecord available from EventSetup:\n"
649 <<
" - Jets will not be corrected.\n"
650 <<
" - If you want to change this add the following lines to your "
653 <<
" ## load jet corrections\n"
655 "process.load(\"JetMETCorrections.Configuration."
656 "JetCorrectionServicesAllAlgos_cff\") \n"
657 <<
" process.prefer(\"ak5CaloL2L3\")\n"
659 <<
"-----------------------------------------------------------------"
660 "-------------------- \n";
665 std::vector<reco::Jet> correctedJets;
666 unsigned int mult = 0, multBEff = 0, multBPur = 0, multNoBPur = 0,
667 multBVtx = 0, multBCombVtx = 0;
677 vector<double> bJetDiscVal;
678 vector<double> NobJetDiscVal;
683 jet != jets->end(); ++
jet) {
685 unsigned int idx =
jet - jets->begin();
686 if (dynamic_cast<const reco::CaloJet*>(&*
jet)) {
688 dynamic_cast<const reco::CaloJet*>(jets->refAt(idx).get())) {
689 if (!(*
jetIDSelect_)((*jetID)[jets->refAt(idx)]))
continue;
694 if (dynamic_cast<const reco::CaloJet*>(&*
jet)) {
702 }
else if (dynamic_cast<const reco::PFJet*>(&*
jet)) {
727 correctedJets.push_back(monitorJet);
733 if ((*btagVtx)[jetRef] >
btagVtxWP_) ++multBVtx;
737 TaggedJetCand = monitorJet;
739 bJetDiscVal.push_back((*btagPur)[jetRef]);
741 }
else if (multBPur == 1) {
742 bJetDiscVal.push_back((*btagPur)[jetRef]);
743 if (bJetDiscVal[1] > bJetDiscVal[0]) TaggedJetCand = monitorJet;
748 if (multNoBPur == 0) {
749 UnTaggedJetCand = monitorJet;
750 NobJetDiscVal.push_back((*btagPur)[jetRef]);
752 }
else if (multNoBPur == 1) {
753 NobJetDiscVal.push_back((*btagPur)[jetRef]);
754 if (NobJetDiscVal[1] < NobJetDiscVal[0]) UnTaggedJetCand = monitorJet;
760 if ((*btagEff)[jetRef] >
btagEffWP_) ++multBEff;
763 fill(
"jet1BDiscPur_", (*btagPur)[jetRef]);
764 fill(
"jet1BDiscCombVtx_", (*btagCombVtx)[jetRef]);
765 }
else if (mult == 2) {
766 fill(
"jet2BDiscPur_", (*btagPur)[jetRef]);
767 fill(
"jet2BDiscCombVtx_", (*btagCombVtx)[jetRef]);
770 fill(
"jetBDiscEff_", (*btagEff)[jetRef]);
771 fill(
"jetBDiscPur_", (*btagPur)[jetRef]);
772 fill(
"jetBDiscVtx_", (*btagVtx)[jetRef]);
773 fill(
"jetBDiscCombVtx_", (*btagCombVtx)[jetRef]);
777 fill(
"jet1Pt_", monitorJet.
pt());
778 fill(
"jet1Eta_", monitorJet.
eta());
780 FwdJetCand = monitorJet;
784 fill(
"jet2Pt_", monitorJet.
pt());
785 fill(
"jet2Eta_", monitorJet.
eta());
789 FwdJetCand = monitorJet;
792 fill(
"FwdJetPt_", FwdJetCand.
pt());
793 fill(
"FwdJetEta_", FwdJetCand.
eta());
797 if (multNoBPur == 1 && multBPur == 1) {
799 fill(
"TaggedJetPtEta_", TaggedJetCand.
pt(), TaggedJetCand.
eta());
800 fill(
"UnTaggedJetPtEta_", UnTaggedJetCand.
pt(), UnTaggedJetCand.
eta());
802 fill(
"TaggedJetPt_", TaggedJetCand.
pt());
803 fill(
"TaggedJetEta_", TaggedJetCand.
eta());
804 fill(
"UnTaggedJetPt_", UnTaggedJetCand.
pt());
805 fill(
"UnTaggedJetEta_", UnTaggedJetCand.
eta());
808 fill(
"jetMult_", mult);
809 fill(
"jetMultBEff_", multBEff);
810 fill(
"jetMultBPur_", multBPur);
811 fill(
"jetMultBVtx_", multBVtx);
812 fill(
"jetMultBCombVtx_", multBCombVtx);
825 met_ =
mets_.begin();
826 met_ !=
mets_.end(); ++met_) {
829 if (met->begin() != met->end()) {
830 unsigned int idx = met_ -
mets_.begin();
832 fill(
"metCalo_", met->begin()->et());
835 fill(
"metTC_", met->begin()->et());
838 fill(
"metPflow_", met->begin()->et());
839 mET = *(met->begin());
854 double wMass = eventKinematics.
massWBoson(correctedJets);
855 double topMass = eventKinematics.
massTopQuark(correctedJets);
856 if (wMass >= 0 && topMass >= 0) {
857 fill(
"massW_", wMass);
858 fill(
"massTop_", topMass);
865 if (
logged_ <=
hists_.find(
"eventLogger_")->second->getNbinsY()) {
872 if (correctedJets.size() > 0)
873 fill(
"eventLogger_", 3.5,
logged_ + 0.5, correctedJets[0].
pt());
874 if (correctedJets.size() > 1)
875 fill(
"eventLogger_", 4.5,
logged_ + 0.5, correctedJets[1].
pt());
876 if (correctedJets.size() > 2)
877 fill(
"eventLogger_", 5.5,
logged_ + 0.5, correctedJets[2].
pt());
878 if (correctedJets.size() > 3)
879 fill(
"eventLogger_", 6.5,
logged_ + 0.5, correctedJets[3].
pt());
885 if (multBPur != 0 && mMultIso == 1) {
887 double mtW = eventKinematics.
tmassWBoson(&mu, mET, TaggedJetCand);
889 double MTT = eventKinematics.
tmassTopQuark(&mu, mET, TaggedJetCand);
893 if (multBPur != 0 && eMultIso == 1) {
894 double mtW = eventKinematics.
tmassWBoson(&e, mET, TaggedJetCand);
896 double MTT = eventKinematics.
tmassTopQuark(&e, mET, TaggedJetCand);
945 std::vector<edm::ParameterSet>
sel =
946 cfg.
getParameter<std::vector<edm::ParameterSet>>(
"selection");
948 for (
unsigned int i = 0;
i < sel.size(); ++
i) {
952 std::unique_ptr<SingleTopTChannelLepton::MonitorEnsemble>(
956 cfg.
getParameter<std::vector<edm::ParameterSet>>(
"selection"),
959 for (std::vector<std::string>::const_iterator selIt =
selectionOrder_.begin();
963 using std::unique_ptr;
965 if (
type ==
"muons") {
969 if (
type ==
"muons/pf") {
973 if (
type ==
"elecs") {
977 if (
type ==
"elecs/pf") {
985 if (
type ==
"jets") {
990 if (
type ==
"jets/pf") {
995 if (
type ==
"jets/calo") {
1000 if (
type ==
"met") {
1011 selIt->second.second->book(ibooker);
1035 unsigned int passed = 0;
1036 unsigned int nJetSteps = -1;
1037 unsigned int nPFJetSteps = -1;
1038 unsigned int nCaloJetSteps = -1;
1039 for (std::vector<std::string>::const_iterator selIt =
selectionOrder_.begin();
1043 if (
type ==
"empty") {
1046 if (
type ==
"presel") {
1080 if (
type ==
"jets") {
1090 if (
type ==
"jets/pf") {
1100 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
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
std::unique_ptr< StringCutObjectSelector< reco::CaloJet > > jetSelectCalo
double btagEffWP_
btag working points
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
bool getByToken(EDGetToken token, Handle< PROD > &result) const
std::unique_ptr< SelectionStep< reco::Vertex > > PvStep
virtual double correction(const LorentzVector &fJet) const =0
get correction using Jet information only
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_
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
virtual double eta() const
momentum pseudorapidity
virtual double pt() const
transverse momentum
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_
edm::EDGetTokenT< reco::JetTagCollection > btagPur_
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
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
edm::EDGetTokenT< reco::JetTagCollection > btagEff_
btag discriminator labels
std::unique_ptr< StringCutObjectSelector< reco::JetID > > jetIDSelect_
extra jetID selection on calo jets
bool isNull() const
Checks for null.
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< reco::JetTagCollection > btagVtx_
tuple idx
DEBUGGING if hasattr(process,"trackMonIterativeTracking2012"): print "trackMonIterativeTracking2012 D...
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
virtual void analyze(const edm::Event &event, const edm::EventSetup &setup)
do this during the event loop
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
volatile std::atomic< bool > shutdown_flag false
std::vector< std::unique_ptr< SelectionStep< reco::PFJet > > > PFJetSteps
std::unique_ptr< SelectionStep< reco::Muon > > MuonStep
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
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