15 namespace SingleTopTChannelLepton {
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);
759 fill(
"jetMultBCombVtx_", multBCombVtx);
772 met_ =
mets_.begin();
773 met_ !=
mets_.end(); ++met_) {
776 if (met->begin() != met->end()) {
777 unsigned int idx = met_ -
mets_.begin();
779 fill(
"metCalo_", met->begin()->et());
782 fill(
"metTC_", met->begin()->et());
785 fill(
"metPflow_", met->begin()->et());
786 mET = *(met->begin());
801 double wMass = eventKinematics.
massWBoson(correctedJets);
802 double topMass = eventKinematics.
massTopQuark(correctedJets);
803 if (wMass >= 0 && topMass >= 0) {
804 fill(
"massW_", wMass);
805 fill(
"massTop_", topMass);
812 if (
logged_ <=
hists_.find(
"eventLogger_")->second->getNbinsY()) {
819 if (correctedJets.size() > 0)
820 fill(
"eventLogger_", 3.5,
logged_ + 0.5, correctedJets[0].
pt());
821 if (correctedJets.size() > 1)
822 fill(
"eventLogger_", 4.5,
logged_ + 0.5, correctedJets[1].
pt());
823 if (correctedJets.size() > 2)
824 fill(
"eventLogger_", 5.5,
logged_ + 0.5, correctedJets[2].
pt());
825 if (correctedJets.size() > 3)
826 fill(
"eventLogger_", 6.5,
logged_ + 0.5, correctedJets[3].
pt());
832 if (multBCombVtx != 0 && mMultIso == 1) {
834 double mtW = eventKinematics.
tmassWBoson(&mu, mET, TaggedJetCand);
836 double MTT = eventKinematics.
tmassTopQuark(&mu, mET, TaggedJetCand);
840 if (multBCombVtx != 0 && eMultIso == 1) {
841 double mtW = eventKinematics.
tmassWBoson(&e, mET, TaggedJetCand);
843 double MTT = eventKinematics.
tmassTopQuark(&e, mET, TaggedJetCand);
892 std::vector<edm::ParameterSet>
sel =
893 cfg.
getParameter<std::vector<edm::ParameterSet>>(
"selection");
895 for (
unsigned int i = 0;
i < sel.size(); ++
i) {
899 std::unique_ptr<SingleTopTChannelLepton::MonitorEnsemble>(
903 cfg.
getParameter<std::vector<edm::ParameterSet>>(
"selection"),
906 for (std::vector<std::string>::const_iterator selIt =
selectionOrder_.begin();
910 using std::unique_ptr;
912 if (
type ==
"muons") {
916 if (
type ==
"muons/pf") {
920 if (
type ==
"elecs") {
924 if (
type ==
"elecs/pf") {
932 if (
type ==
"jets") {
937 if (
type ==
"jets/pf") {
942 if (
type ==
"jets/calo") {
958 selIt->second.second->book(ibooker);
982 unsigned int passed = 0;
983 unsigned int nJetSteps = -1;
984 unsigned int nPFJetSteps = -1;
985 unsigned int nCaloJetSteps = -1;
986 for (std::vector<std::string>::const_iterator selIt =
selectionOrder_.begin();
990 if (
type ==
"empty") {
993 if (
type ==
"presel") {
1027 if (
type ==
"jets") {
1037 if (
type ==
"jets/pf") {
1047 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
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
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
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
std::unique_ptr< StringCutObjectSelector< reco::JetID > > jetIDSelect_
extra jetID selection on calo jets
string key
FastSim: produces sample of signal events, overlayed with premixed minbias events.
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
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
virtual double eta() const final
momentum pseudorapidity
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
virtual double pt() const final
transverse momentum
std::unique_ptr< StringCutObjectSelector< reco::PFCandidate, true > > muonSelect
std::string elecIso_
extra isolation criterion on electron
std::unique_ptr< StringCutObjectSelector< reco::Jet > > jetSelectJet