29 static const double WMASS = 80.4;
38 jetIDSelect_(nullptr),
64 std::make_unique<StringCutObjectSelector<pat::Electron>>(
elecExtras.getParameter<
std::string>(
"select"));
70 std::make_unique<StringCutObjectSelector<pat::Electron>>(
elecExtras.getParameter<
std::string>(
"isolation"));
91 std::make_unique<StringCutObjectSelector<reco::Vertex>>(
pvExtras.getParameter<
std::string>(
"select"));
101 std::make_unique<StringCutObjectSelector<pat::Muon>>(
muonExtras.getParameter<
std::string>(
"select"));
107 std::make_unique<StringCutObjectSelector<pat::Muon>>(
muonExtras.getParameter<
std::string>(
"isolation"));
186 hists_[
"pvMult_"] = ibooker.
book1D(
"PvMult",
"N_{good pvs}", 50, 0., 50.);
188 hists_[
"muonPt_"] = ibooker.
book1D(
"MuonPt",
"pt(#mu TightId, TightIso)", 40, 0., 200.);
190 hists_[
"muonMult_"] = ibooker.
book1D(
"MuonMult",
"N_{loose}(#mu)", 10, 0., 10.);
195 hists_[
"muonMultTight_"] = ibooker.
book1D(
"MuonMultTight",
"N_{TightIso,TightId}(#mu)", 10, 0., 10.);
198 hists_[
"elecPt_"] = ibooker.
book1D(
"ElecPt",
"pt(e TightId, TightIso)", 40, 0., 200.);
204 hists_[
"jetMult_"] = ibooker.
book1D(
"JetMult",
"N_{30}(jet)", 10, 0., 10.);
205 hists_[
"jetLooseMult_"] = ibooker.
book1D(
"JetLooseMult",
"N_{30,loose}(jet)", 10, 0., 10.);
214 hists_[
"slimmedMETs_"] = ibooker.
book1D(
"slimmedMETs",
"MET_{slimmed}", 40, 0., 200.);
216 hists_[
"massW_"] = ibooker.
book1D(
"MassW",
"M(W)", 60, 0., 300.);
218 hists_[
"massTop_"] = ibooker.
book1D(
"MassTop",
"M(Top)", 50, 0., 500.);
223 hists_[
"MTWm_"] = ibooker.
book1D(
"MTWm",
"M_{T}^{W}(#mu)", 60, 0., 300.);
225 hists_[
"mMTT_"] = ibooker.
book1D(
"mMTT",
"M_{T}^{t}(#mu)", 50, 0., 500.);
228 hists_[
"MTWe_"] = ibooker.
book1D(
"MTWe",
"M_{T}^{W}(e)", 60, 0., 300.);
230 hists_[
"eMTT_"] = ibooker.
book1D(
"eMTT",
"M_{T}^{t}(e)", 50, 0., 500.);
240 hists_[
"muonEta_"] = ibooker.
book1D(
"MuonEta",
"#eta(#mu TightId,TightIso)", 30, -3., 3.);
242 hists_[
"muonPhi_"] = ibooker.
book1D(
"MuonPhi",
"#phi(#mu TightId,TightIso)", 40, -4., 4.);
243 hists_[
"muonRelIso_"] = ibooker.
book1D(
"MuonRelIso",
"Iso_{Rel}(#mu TightId) (#Delta#beta Corrected)", 50, 0., 1.);
246 hists_[
"elecEta_"] = ibooker.
book1D(
"ElecEta",
"#eta(e TightId, TightIso)", 30, -3., 3.);
247 hists_[
"elecPhi_"] = ibooker.
book1D(
"ElecPhi",
"#phi(e TightId, TightIso)", 40, -4., 4.);
249 hists_[
"elecRelIso_"] = ibooker.
book1D(
"ElecRelIso",
"Iso_{Rel}(e TightId)", 50, 0., 1.);
251 hists_[
"elecMultTight_"] = ibooker.
book1D(
"ElecMultTight",
"N_{TightIso,TightId}(e)", 10, 0., 10.);
262 hists_[
"jet1Eta_"] = ibooker.
book1D(
"Jet1Eta",
"#eta_{30,loose}(jet1)", 60, -3., 3.);
264 hists_[
"jet1Pt_"] = ibooker.
book1D(
"Jet1Pt",
"pt_{30,loose}(jet1)", 60, 0., 300.);
266 hists_[
"jet2Eta_"] = ibooker.
book1D(
"Jet2Eta",
"#eta_{30,loose}(jet2)", 60, -3., 3.);
268 hists_[
"jet2Pt_"] = ibooker.
book1D(
"Jet2Pt",
"pt_{30,loose}(jet2)", 60, 0., 300.);
278 hists_[
"slimmedMETsNoHF_"] = ibooker.
book1D(
"slimmedMETsNoHF",
"MET_{slimmedNoHF}", 40, 0., 200.);
280 hists_[
"slimmedMETsPuppi_"] = ibooker.
book1D(
"slimmedMETsPuppi",
"MET_{slimmedPuppi}", 40, 0., 200.);
282 hists_[
"muonDelZ_"] = ibooker.
book1D(
"MuonDelZ",
"d_{z}(#mu)", 50, -25., 25.);
284 hists_[
"muonDelXY_"] = ibooker.
book2D(
"MuonDelXY",
"d_{xy}(#mu)", 50, -0.1, 0.1, 50, -0.1, 0.1);
287 hists_[
"muonDelXY_"]->setAxisTitle(
"x [cm]", 1);
288 hists_[
"muonDelXY_"]->setAxisTitle(
"y [cm]", 2);
296 hists_[
"muonChHadIso_"] = ibooker.
book1D(
"MuonChHadIsoComp",
"ChHad_{IsoComponent}(#mu TightId)", 50, 0., 5.);
299 hists_[
"muonNeHadIso_"] = ibooker.
book1D(
"MuonNeHadIsoComp",
"NeHad_{IsoComponent}(#mu TightId)", 50, 0., 5.);
302 hists_[
"muonPhIso_"] = ibooker.
book1D(
"MuonPhIsoComp",
"Photon_{IsoComponent}(#mu TightId)", 50, 0., 5.);
305 hists_[
"elecChHadIso_"] = ibooker.
book1D(
"ElectronChHadIsoComp",
"ChHad_{IsoComponent}(e TightId)", 50, 0., 5.);
308 hists_[
"elecNeHadIso_"] = ibooker.
book1D(
"ElectronNeHadIsoComp",
"NeHad_{IsoComponent}(e TightId)", 50, 0., 5.);
311 hists_[
"elecPhIso_"] = ibooker.
book1D(
"ElectronPhIsoComp",
"Photon_{IsoComponent}(e TightId)", 50, 0., 5.);
326 hists_[
"jetMultBCSVM_"] = ibooker.
book1D(
"JetMultBCSVM",
"N_{30}(CSVM)", 10, 0., 10.);
328 hists_[
"jetBCSV_"] = ibooker.
book1D(
"JetDiscCSV",
"BJet Disc_{CSV}(JET)", 100, -1., 2.);
338 hists_[
"eventLogger_"] = ibooker.
book2D(
"EventLogger",
"Logged Events", 9, 0., 9., 10, 0., 10.);
341 hists_[
"eventLogger_"]->getTH1()->SetOption(
"TEXT");
342 hists_[
"eventLogger_"]->setBinLabel(1,
"Run", 1);
343 hists_[
"eventLogger_"]->setBinLabel(2,
"Block", 1);
344 hists_[
"eventLogger_"]->setBinLabel(3,
"Event", 1);
345 hists_[
"eventLogger_"]->setBinLabel(4,
"pt_{L2L3}(jet1)", 1);
346 hists_[
"eventLogger_"]->setBinLabel(5,
"pt_{L2L3}(jet2)", 1);
347 hists_[
"eventLogger_"]->setBinLabel(6,
"pt_{L2L3}(jet3)", 1);
348 hists_[
"eventLogger_"]->setBinLabel(7,
"pt_{L2L3}(jet4)", 1);
349 hists_[
"eventLogger_"]->setBinLabel(8,
"M_{W}", 1);
350 hists_[
"eventLogger_"]->setBinLabel(9,
"M_{Top}", 1);
351 hists_[
"eventLogger_"]->setAxisTitle(
"logged evts", 2);
377 unsigned int pvMult = 0;
381 (!(
pv->isFake()) && (
pv->ndof() > 4.0) && (
abs(
pv->z()) < 24.0) && (
abs(
pv->position().Rho()) < 2.0));
389 fill(
"pvMult_", pvMult);
421 event.getByLabel(
rhoTag, _rhoHandle);
432 unsigned int eMultIso = 0, eMult = 0;
433 std::vector<const pat::Electron*> isoElecs;
440 double el_ChHadIso = elec->pfIsolationVariables().sumChargedHadronPt;
441 double el_NeHadIso = elec->pfIsolationVariables().sumNeutralHadronEt;
442 double el_PhIso = elec->pfIsolationVariables().sumPhotonEt;
444 double rho = _rhoHandle.
isValid() ? (
float)(*_rhoHandle) : 0;
445 double absEta =
abs(elec->superCluster()->eta());
449 else if (absEta < 1.479)
451 else if (absEta < 2.000)
453 else if (absEta < 2.200)
455 else if (absEta < 2.300)
457 else if (absEta < 2.400)
459 else if (absEta < 5.000)
462 double el_pfRelIso = (el_ChHadIso +
max(0., el_NeHadIso + el_PhIso - rho * eA)) / elec->pt();
467 fill(
"elecRelIso_", el_pfRelIso);
468 fill(
"elecChHadIso_", el_ChHadIso);
469 fill(
"elecNeHadIso_", el_NeHadIso);
470 fill(
"elecPhIso_", el_PhIso);
476 if (!((el_pfRelIso < 0.0588 && absEta < 1.479) || (el_pfRelIso < 0.0571 && absEta > 1.479)))
484 fill(
"elecPt_", elec->pt());
485 fill(
"elecEta_", elec->eta());
486 fill(
"elecPhi_", elec->phi());
492 fill(
"elecMultTight_", eMultIso);
503 unsigned int mMult = 0, mTight = 0;
516 if (
muon->isGlobalMuon()) {
517 fill(
"muonDelZ_",
muon->innerTrack()->vz());
518 fill(
"muonDelXY_",
muon->innerTrack()->vx(),
muon->innerTrack()->vy());
525 double chHadPt =
muon->pfIsolationR04().sumChargedHadronPt;
526 double neHadEt =
muon->pfIsolationR04().sumNeutralHadronEt;
527 double phoEt =
muon->pfIsolationR04().sumPhotonEt;
529 double pfRelIso = (chHadPt +
max(0., neHadEt + phoEt - 0.5 *
muon->pfIsolationR04().sumPUPt)) /
532 if (!(
muon->isGlobalMuon() &&
muon->isPFMuon() &&
muon->globalTrack()->normalizedChi2() < 10. &&
533 muon->globalTrack()->hitPattern().numberOfValidMuonHits() > 0 &&
muon->numberOfMatchedStations() > 1 &&
534 fabs(
muon->muonBestTrack()->dxy(pver.
position())) < 0.2 &&
535 fabs(
muon->muonBestTrack()->dz(pver.
position())) < 0.5 &&
536 muon->innerTrack()->hitPattern().numberOfValidPixelHits() > 0 &&
537 muon->innerTrack()->hitPattern().trackerLayersWithMeasurement() > 5))
542 fill(
"muonRelIso_", pfRelIso);
543 fill(
"muonChHadIso_", chHadPt);
544 fill(
"muonNeHadIso_", neHadEt);
545 fill(
"muonPhIso_", phoEt);
546 fill(
"muonRelIso_", pfRelIso);
549 if (!(pfRelIso < 0.15))
565 fill(
"muonMult_", mMult);
566 fill(
"muonMultTight_", mTight);
577 std::vector<pat::Jet> correctedJets;
578 std::vector<double> JetTagValues;
580 vector<double> bJetDiscVal;
582 unsigned int mult = 0, loosemult = 0, multBCSVM = 0;
611 correctedJets.push_back(monitorJet);
616 "pfCombinedInclusiveSecondaryVertexV2BJetTags"));
617 if (monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags") > 0.89) {
618 if (multBCSVM == 0) {
619 TaggedJetCand = monitorJet;
620 bJetDiscVal.push_back(monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
621 }
else if (multBCSVM == 1) {
622 bJetDiscVal.push_back(monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
623 if (bJetDiscVal[1] > bJetDiscVal[0])
624 TaggedJetCand = monitorJet;
632 JetTagValues.push_back(monitorJet.
bDiscriminator(
"pfCombinedInclusiveSecondaryVertexV2BJetTags"));
635 if (loosemult == 1) {
638 fill(
"jet1Pt_", monitorJet.
pt());
640 fill(
"jet1Eta_", monitorJet.
eta());
642 if (loosemult == 2) {
643 fill(
"jet2Pt_", monitorJet.
pt());
645 fill(
"jet2Eta_", monitorJet.
eta());
650 fill(
"jetLooseMult_", loosemult);
651 fill(
"jetMultBCSVM_", multBCSVM);
670 if (
met->begin() !=
met->end()) {
671 unsigned int idx = met_ -
mets_.begin();
673 fill(
"slimmedMETs_",
met->begin()->et());
675 fill(
"slimmedMETsNoHF_",
met->begin()->et());
677 fill(
"slimmedMETsPuppi_",
met->begin()->et());
693 double topMass = eventKinematics.
massTopQuark(correctedJets);
694 if (
wMass >= 0 && topMass >= 0) {
696 fill(
"massTop_", topMass);
712 if (
logged_ <=
hists_.find(
"eventLogger_")->second->getNbinsY()) {
716 fill(
"eventLogger_", 1.5,
logged_ + 0.5,
event.eventAuxiliary().luminosityBlock());
718 if (!correctedJets.empty())
719 fill(
"eventLogger_", 3.5,
logged_ + 0.5, correctedJets[0].
pt());
720 if (correctedJets.size() > 1)
721 fill(
"eventLogger_", 4.5,
logged_ + 0.5, correctedJets[1].
pt());
722 if (correctedJets.size() > 2)
723 fill(
"eventLogger_", 5.5,
logged_ + 0.5, correctedJets[2].
pt());
724 if (correctedJets.size() > 3)
725 fill(
"eventLogger_", 6.5,
logged_ + 0.5, correctedJets[3].
pt());
733 if (multBCSVM != 0 && mTight == 1) {
734 double mtW = eventKinematics.
tmassWBoson(&
mu, mET, TaggedJetCand);
740 if (multBCSVM != 0 && eMultIso == 1) {
741 double mtW = eventKinematics.
tmassWBoson(&
e, mET, TaggedJetCand);
743 double MTT = eventKinematics.
tmassTopQuark(&
e, mET, TaggedJetCand);
750 : vertexSelect_(nullptr),
752 beamspotSelect_(nullptr),
754 ElectronStep(nullptr),
771 std::make_unique<StringCutObjectSelector<reco::BeamSpot>>(
beamspot.getParameter<
std::string>(
"select"));
775 sel_ =
cfg.getParameter<std::vector<edm::ParameterSet>>(
"selection");
777 for (
unsigned int i = 0;
i <
sel_.size(); ++
i) {
780 std::make_pair(
sel_.at(
i),
781 std::make_unique<SingleTopTChannelLepton_miniAOD::MonitorEnsemble>(
789 if (
type ==
"muons") {
792 if (
type ==
"elecs") {
798 if (
type ==
"jets") {
812 selIt->second.second->book(ibooker);
832 unsigned int nJetSteps = -1;
838 if (
type ==
"empty") {
866 if (
type ==
"jets") {
868 if (
JetSteps[nJetSteps] !=
nullptr) {
Analysis-level MET class.
std::vector< std::string > selectionOrder_
edm::EDGetTokenT< edm::ValueMap< float > > electronId_
electronId label
std::unique_ptr< SelectionStep< reco::Vertex > > PvStep
T getParameter(std::string const &) const
std::map< std::string, MonitorElement * > hists_
histogram container
float bDiscriminator(const std::string &theLabel) const
-— methods for accessing b-tagging info -—
edm::EDGetTokenT< edm::TriggerResults > triggerTable_
trigger table
std::vector< std::string > triggerPaths_
double pt() const final
transverse momentum
int chargedMultiplicity() const
chargedMultiplicity
double tmassWBoson(pat::Muon *lep, const pat::MET &met, const pat::Jet &b)
calculate W boson transverse mass estimate
std::vector< std::unique_ptr< SelectionStep< pat::Jet > > > JetSteps
virtual void setCurrentFolder(std::string const &fullpath)
const Point & position() const
position
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
edm::EDGetTokenT< edm::View< pat::Electron > > elecs_
Level verbosity_
verbosity level for booking
constexpr bool isUninitialized() const noexcept
edm::EDGetTokenT< edm::View< reco::Vertex > > pvs_
int neutralMultiplicity() const
neutralMultiplicity
double massWBoson(const std::vector< pat::Jet > &jets)
calculate W boson mass estimate
static const double WMASS
bool existsAs(std::string const ¶meterName, bool trackiness=true) const
checks if a parameter exists as a given type
float neutralHadronEnergyFraction() const
neutralHadronEnergyFraction (relative to uncorrected jet energy)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
std::unique_ptr< StringCutObjectSelector< pat::Electron > > elecIso_
extra isolation criterion on electron
std::unique_ptr< StringCutObjectSelector< pat::Muon > > muonIso_
extra isolation criterion on muon
electronId
when omitted electron plots will be filled w/o cut on electronId
edm::EDGetTokenT< edm::View< pat::Jet > > jets_
input sources for monitoring
double lowerEdge_
mass window upper and lower edge
std::map< std::string, std::pair< edm::ParameterSet, std::unique_ptr< SingleTopTChannelLepton_miniAOD::MonitorEnsemble > > > selection_
std::unique_ptr< SelectionStep< pat::Muon > > MuonStep
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< StringCutObjectSelector< reco::Vertex > > pvSelect_
std::string objectType(const std::string &label)
Abs< T >::type abs(const T &t)
std::vector< edm::ParameterSet > sel_
edm::InputTag beamspot_
beamspot
edm::EDGetTokenT< reco::BeamSpot > beamspot__
double massTopQuark(const std::vector< pat::Jet > &jets)
calculate t-quark mass estimate
double tmassTopQuark(pat::Muon *lep, const pat::MET &met, const pat::Jet &b)
calculate top quark transverse mass estimate
std::unique_ptr< StringCutObjectSelector< pat::Electron > > elecSelect_
extra selection on electrons
edm::EDGetTokenT< reco::JetIDValueMap > jetIDLabel_
jetID as an extra selection type
std::vector< std::string > triggerPaths_
trigger paths
float chargedHadronEnergyFraction() const
chargedHadronEnergyFraction (relative to uncorrected jet energy)
void book(DQMStore::IBooker &ibooker)
book histograms in subdirectory directory
edm::ESGetToken< JetCorrector, JetCorrectionsRecord > jetCorrector_
jetCorrector
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Analysis-level electron class.
Analysis-level calorimeter jet class.
float chargedEmEnergyFraction() const
chargedEmEnergyFraction (relative to uncorrected jet energy)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Templated helper class to allow a selection on a certain object collection.
std::unique_ptr< SelectionStep< pat::MET > > METStep
std::unique_ptr< StringCutObjectSelector< pat::Jet > > jetSelect
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
float neutralEmEnergyFraction() const
neutralEmEnergyFraction (relative to uncorrected jet energy)
std::unique_ptr< StringCutObjectSelector< reco::BeamSpot > > beamspotSelect_
string cut selector
std::unique_ptr< StringCutObjectSelector< pat::Muon > > muonSelect_
extra selection on muons
std::string label_
instance label
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
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
Analysis-level muon class.
static const unsigned int MAXJETS
std::unique_ptr< SelectionStep< pat::Electron > > ElectronStep
double eta() const final
momentum pseudorapidity