56 #include "TLorentzVector.h" 78 typedef std::vector<edm::InputTag> vtag;
83 triggerToken_ = consumes<edm::TriggerResults>(theTriggerResultsCollection);
86 jetLabels_ = ps.
getParameter<std::vector<edm::InputTag> >(
"jetLabels");
87 for (std::vector<edm::InputTag>::const_iterator jetlabel = jetLabels_.begin(), jetlabelEnd = jetLabels_.end();
88 jetlabel != jetlabelEnd;
93 sdjetToken_ = consumes<edm::View<reco::BasicJet> >(sdjetLabel_);
98 jetPtMins_ = ps.
getParameter<std::vector<double> >(
"jetPtMins");
100 allHadRapidityCut_ = ps.
getParameter<
double>(
"allHadRapidityCut");
101 allHadDeltaPhiCut_ = ps.
getParameter<
double>(
"allHadDeltaPhiCut");
103 semiMu_HadJetPtCut_ = ps.
getParameter<
double>(
"semiMu_HadJetPtCut");
104 semiMu_LepJetPtCut_ = ps.
getParameter<
double>(
"semiMu_LepJetPtCut");
105 semiMu_dphiHadCut_ = ps.
getParameter<
double>(
"semiMu_dphiHadCut");
106 semiMu_dRMin_ = ps.
getParameter<
double>(
"semiMu_dRMin");
107 semiMu_ptRel_ = ps.
getParameter<
double>(
"semiMu_ptRel");
108 muonSelect_ = std::make_shared<StringCutObjectSelector<reco::Muon> >(
112 semiE_HadJetPtCut_ = ps.
getParameter<
double>(
"semiE_HadJetPtCut");
113 semiE_LepJetPtCut_ = ps.
getParameter<
double>(
"semiE_LepJetPtCut");
114 semiE_dphiHadCut_ = ps.
getParameter<
double>(
"semiE_dphiHadCut");
117 elecSelect_ = std::make_shared<StringCutObjectSelector<reco::GsfElectron> >(
125 PFMETToken_ = consumes<std::vector<reco::PFMET> >(PFMETLabel_);
145 std::stringstream
ss;
146 ss <<
"Physics/B2G/" << jetLabels_[
icoll].label();
148 pfJet_pt.push_back(bei.
book1D(
"pfJet_pt",
"Pt of PFJet (GeV)", 50, 0.0, 1000));
149 pfJet_y.push_back(bei.
book1D(
"pfJet_y",
"Rapidity of PFJet", 60, -6.0, 6.0));
150 pfJet_phi.push_back(bei.
book1D(
"pfJet_phi",
"#phi of PFJet (radians)", 60, -3.14159, 3.14159));
151 pfJet_m.push_back(bei.
book1D(
"pfJet_m",
"Mass of PFJet (GeV)", 50, 0.0, 500));
152 pfJet_chef.push_back(bei.
book1D(
"pfJet_pfchef",
"PFJetID CHEF", 50, 0.0, 1.0));
153 pfJet_nhef.push_back(bei.
book1D(
"pfJet_pfnhef",
"PFJetID NHEF", 50, 0.0, 1.0));
154 pfJet_cemf.push_back(bei.
book1D(
"pfJet_pfcemf",
"PFJetID CEMF", 50, 0.0, 1.0));
155 pfJet_nemf.push_back(bei.
book1D(
"pfJet_pfnemf",
"PFJetID NEMF", 50, 0.0, 1.0));
157 boostedJet_subjetPt.push_back(bei.
book1D(
"boostedJet_subjetPt",
"Pt of subjets (GeV)", 50, 0.0, 500));
158 boostedJet_subjetY.push_back(bei.
book1D(
"boostedJet_subjetY",
"Rapidity of subjets", 60, -6.0, 6.0));
159 boostedJet_subjetPhi.push_back(
160 bei.
book1D(
"boostedJet_subjetPhi",
"#phi of subjets (radians)", 60, -3.14159, 3.14159));
161 boostedJet_subjetM.push_back(bei.
book1D(
"boostedJet_subjetM",
"Mass of subjets (GeV)", 50, 0.0, 250.));
162 boostedJet_subjetN.push_back(bei.
book1D(
"boostedJet_subjetN",
"Number of subjets", 10, 0, 10));
163 boostedJet_massDrop.push_back(bei.
book1D(
"boostedJet_massDrop",
"Mass drop for W-like jets", 50, 0.0, 1.0));
164 boostedJet_wMass.push_back(bei.
book1D(
"boostedJet_wMass",
"W Mass for top-like jets", 50, 0.0, 250.0));
168 pfMet_pt = bei.
book1D(
"pfMet_pt",
"Pf Missing p_{T}; GeV", 50, 0.0, 500);
169 pfMet_phi = bei.
book1D(
"pfMet_phi",
"Pf Missing p_{T} #phi;#phi (radians)", 35, -3.5, 3.5);
173 semiMu_muPt = bei.
book1D(
"semiMu_muPt",
"Pt of Muon in #mu+Jets Channel (GeV)", 50, 0.0, 1000);
174 semiMu_muEta = bei.
book1D(
"semiMu_muEta",
"#eta of Muon in #mu+Jets Channel", 60, -6.0, 6.0);
175 semiMu_muPhi = bei.
book1D(
"semiMu_muPhi",
"#phi of Muon in #mu+Jets Channel (radians)", 60, -3.14159, 3.14159);
176 semiMu_muDRMin = bei.
book1D(
"semiMu_muDRMin",
"#Delta R(E,nearest jet) in #mu+Jets Channel", 50, 0, 10.0);
177 semiMu_muPtRel = bei.
book1D(
"semiMu_muPtRel",
"p_{T}^{REL} in #mu+Jets Channel", 60, 0, 300.);
178 semiMu_hadJetDR = bei.
book1D(
"semiMu_hadJetDR",
"#Delta R(E,had jet) in #mu+Jets Channel", 50, 0, 10.0);
180 bei.
book1D(
"semiMu_hadJetPt",
"Pt of Leading Hadronic Jet in #mu+Jets Channel (GeV)", 50, 0.0, 1000);
181 semiMu_hadJetY = bei.
book1D(
"semiMu_hadJetY",
"Rapidity of Leading Hadronic Jet in #mu+Jets Channel", 60, -6.0, 6.0);
182 semiMu_hadJetPhi = bei.
book1D(
183 "semiMu_hadJetPhi",
"#phi of Leading Hadronic Jet in #mu+Jets Channel (radians)", 60, -3.14159, 3.14159);
185 bei.
book1D(
"semiMu_hadJetMass",
"Mass of Leading Hadronic Jet in #mu+Jets Channel (GeV)", 50, 0.0, 500);
187 bei.
book1D(
"semiMu_hadJetwMass",
"W Mass for Leading Hadronic Jet in #mu+Jets Channel (GeV)", 50, 0.0, 250.0);
188 semiMu_mttbar = bei.
book1D(
"semiMu_mttbar",
"Mass of #mu+Jets ttbar Candidate", 100, 0., 5000.);
192 semiE_ePt = bei.
book1D(
"semiE_ePt",
"Pt of Electron in e+Jets Channel (GeV)", 50, 0.0, 1000);
193 semiE_eEta = bei.
book1D(
"semiE_eEta",
"#eta of Electron in e+Jets Channel", 60, -6.0, 6.0);
194 semiE_ePhi = bei.
book1D(
"semiE_ePhi",
"#phi of Electron in e+Jets Channel (radians)", 60, -3.14159, 3.14159);
195 semiE_eDRMin = bei.
book1D(
"semiE_eDRMin",
"#Delta R(E,nearest jet) in e+Jets Channel", 50, 0, 10.0);
196 semiE_ePtRel = bei.
book1D(
"semiE_ePtRel",
"p_{T}^{REL} in e+Jets Channel", 60, 0, 300.);
197 semiE_hadJetDR = bei.
book1D(
"semiE_hadJetDR",
"#Delta R(E,had jet) in e+Jets Channel", 50, 0, 10.0);
198 semiE_hadJetPt = bei.
book1D(
"semiE_hadJetPt",
"Pt of Leading Hadronic Jet in e+Jets Channel (GeV)", 50, 0.0, 1000);
199 semiE_hadJetY = bei.
book1D(
"semiE_hadJetY",
"Rapidity of Leading Hadronic Jet in e+Jets Channel", 60, -6.0, 6.0);
201 bei.
book1D(
"semiE_hadJetPhi",
"#phi of Leading Hadronic Jet in e+Jets Channel (radians)", 60, -3.14159, 3.14159);
203 bei.
book1D(
"semiE_hadJetMass",
"Mass of Leading Hadronic Jet in e+Jets Channel (GeV)", 50, 0.0, 500);
205 bei.
book1D(
"semiE_hadJetwMass",
"W Mass for Leading Hadronic Jet in e+Jets Channel (GeV)", 50, 0.0, 250.0);
206 semiE_mttbar = bei.
book1D(
"semiE_mttbar",
"Mass of e+Jets ttbar Candidate", 100, 0., 5000.);
210 allHad_pt0 = bei.
book1D(
"allHad_pt0",
"Pt of Leading All-Hadronic PFJet (GeV)", 50, 0.0, 1000);
211 allHad_y0 = bei.
book1D(
"allHad_y0",
"Rapidity of Leading All-Hadronic PFJet", 60, -6.0, 6.0);
212 allHad_phi0 = bei.
book1D(
"allHad_phi0",
"#phi of Leading All-Hadronic PFJet (radians)", 60, -3.14159, 3.14159);
213 allHad_mass0 = bei.
book1D(
"allHad_mass0",
"Mass of Leading All-Hadronic PFJet (GeV)", 50, 0.0, 500);
214 allHad_wMass0 = bei.
book1D(
"allHad_wMass0",
"W Mass for Leading All-Hadronic PFJet (GeV)", 50, 0.0, 250.0);
215 allHad_pt1 = bei.
book1D(
"allHad_pt1",
"Pt of Subleading All-Hadronic PFJet (GeV)", 50, 0.0, 1000);
216 allHad_y1 = bei.
book1D(
"allHad_y1",
"Rapidity of Subleading All-Hadronic PFJet", 60, -6.0, 6.0);
217 allHad_phi1 = bei.
book1D(
"allHad_phi1",
"#phi of Subleading All-Hadronic PFJet (radians)", 60, -3.14159, 3.14159);
218 allHad_mass1 = bei.
book1D(
"allHad_mass1",
"Mass of Subleading All-Hadronic PFJet (GeV)", 50, 0.0, 500);
219 allHad_wMass1 = bei.
book1D(
"allHad_wMass1",
"W Mass for Subleading All-Hadronic PFJet (GeV)", 50, 0.0, 250.0);
220 allHad_mttbar = bei.
book1D(
"allHad_mttbar",
"Mass of All-Hadronic ttbar Candidate", 100, 0., 5000.);
227 analyzeJets(
iEvent, iSetup);
228 analyzeSemiMu(
iEvent, iSetup);
229 analyzeSemiE(
iEvent, iSetup);
230 analyzeAllHad(
iEvent, iSetup);
253 pfJet_y[
icoll]->Fill(
jet->rapidity());
261 if (pfjet !=
nullptr) {
272 if (basicjet !=
nullptr) {
273 boostedJet_subjetN[
icoll]->Fill(
jet->numberOfDaughters());
275 for (
unsigned int ida = 0; ida <
jet->numberOfDaughters(); ++ida) {
277 boostedJet_subjetPt[
icoll]->Fill(subjet->
pt());
279 boostedJet_subjetPhi[
icoll]->Fill(subjet->
phi());
280 boostedJet_subjetM[
icoll]->Fill(subjet->
mass());
283 if ((jetLabels_[
icoll].
label() ==
"ak8PFJetsPuppiSoftdrop")) {
284 if (
jet->numberOfDaughters() > 1) {
288 boostedJet_wMass[
icoll]->Fill(da0->
mass());
289 boostedJet_massDrop[
icoll]->Fill(da0->
mass() /
jet->mass());
291 boostedJet_wMass[
icoll]->Fill(da1->
mass());
292 boostedJet_massDrop[
icoll]->Fill(da1->
mass() /
jet->mass());
296 boostedJet_massDrop[
icoll]->Fill(-1.0);
329 if (jet0->
pt() < allHadPtCut_ || jet1->
pt() < allHadPtCut_)
336 allHad_pt0->Fill(jet0->
pt());
338 allHad_phi0->Fill(jet0->
phi());
339 allHad_mass0->Fill(jet0->
mass());
343 allHad_wMass0->Fill(
wMass);
345 allHad_wMass0->Fill(-1.0);
348 allHad_pt1->Fill(jet1->
pt());
350 allHad_phi1->Fill(jet1->
phi());
351 allHad_mass1->Fill(jet1->
mass());
355 allHad_wMass1->Fill(
wMass);
357 allHad_wMass1->Fill(-1.0);
360 auto p4cand = (jet0->
p4() + jet1->
p4());
361 allHad_mttbar->Fill(p4cand.mass());
373 if (!(*muonSelect_)(
muon))
384 double dRMin = 999.0;
391 if (ijet->pt() > pt0 && ijet->p() > semiMu_HadJetPtCut_) {
397 else if (ijet->pt() > semiMu_LepJetPtCut_) {
399 if (idRMin <
dRMin) {
408 auto lepJetP4 = lepJet->
p4();
409 const auto& muonP4 =
muon.p4();
411 double tot = lepJetP4.mag2();
412 double ss = muonP4.Dot(lepJet->
p4());
413 double per = muonP4.mag2();
419 bool pass2D =
dRMin > semiMu_dRMin_ ||
ptRel > semiMu_ptRel_;
424 semiMu_muPt->Fill(
muon.pt());
425 semiMu_muEta->Fill(
muon.eta());
426 semiMu_muPhi->Fill(
muon.phi());
427 semiMu_muDRMin->Fill(
dRMin);
428 semiMu_muPtRel->Fill(
ptRel);
431 semiMu_mttbar->Fill(0.0);
433 semiMu_hadJetPt->Fill(hadJet->
pt());
434 semiMu_hadJetY->Fill(hadJet->
rapidity());
435 semiMu_hadJetPhi->Fill(hadJet->
phi());
436 semiMu_hadJetMass->Fill(hadJet->
mass());
440 semiMu_hadJetWMass->Fill(
wMass);
442 semiMu_hadJetWMass->Fill(-1.0);
466 double dRMin = 999.0;
473 if (ijet->pt() > pt0 && ijet->p() > semiE_HadJetPtCut_) {
479 else if (ijet->pt() > semiE_LepJetPtCut_) {
481 if (idRMin <
dRMin) {
490 auto lepJetP4 = lepJet->
p4();
491 const auto& electronP4 =
electron.p4();
493 double tot = lepJetP4.mag2();
494 double ss = electronP4.Dot(lepJet->
p4());
495 double per = electronP4.mag2();
501 bool pass2D =
dRMin > semiE_dRMin_ ||
ptRel > semiE_ptRel_;
509 semiE_eDRMin->Fill(
dRMin);
510 semiE_ePtRel->Fill(
ptRel);
513 semiE_mttbar->Fill(0.0);
515 semiE_hadJetPt->Fill(hadJet->
pt());
516 semiE_hadJetY->Fill(hadJet->
rapidity());
517 semiE_hadJetPhi->Fill(hadJet->
phi());
518 semiE_hadJetMass->Fill(hadJet->
mass());
522 semiE_hadJetWMass->Fill(
wMass);
524 semiE_hadJetWMass->Fill(-1.0);
constexpr double deltaPhi(double phi1, double phi2)
T getParameter(std::string const &) const
float chargedEmEnergyFraction() const
chargedEmEnergyFraction
virtual void analyzeSemiMu(edm::Event const &e, edm::EventSetup const &eSetup)
virtual void analyzeAllHad(edm::Event const &e, edm::EventSetup const &eSetup)
double pt() const final
transverse momentum
virtual void setCurrentFolder(std::string const &fullpath)
virtual double pt() const =0
transverse momentum
virtual double mass() const =0
mass
virtual double rapidity() const =0
rapidity
void bookHistograms(DQMStore::IBooker &bei, edm::Run const &, edm::EventSetup const &) override
Jets made from CaloTowers.
Jets made from PFObjects.
const LorentzVector & p4() const final
four-momentum Lorentz vector
double rapidity() const final
rapidity
Abs< T >::type abs(const T &t)
float chargedHadronEnergyFraction() const
chargedHadronEnergyFraction
virtual void analyzeSemiE(edm::Event const &e, edm::EventSetup const &eSetup)
float neutralEmEnergyFraction() const
neutralEmEnergyFraction
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Log< level::Info, false > LogInfo
size_t numberOfDaughters() const override
number of daughters
float neutralHadronEnergyFraction() const
neutralHadronEnergyFraction
B2GDQM(const edm::ParameterSet &ps)
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
virtual void analyzeJets(edm::Event const &e, edm::EventSetup const &eSetup)
double mass() const final
mass
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
const_iterator begin() const
const Candidate * daughter(size_type) const override
return daughter at a given position, i = 0, ... numberOfDaughters() - 1 (read only mode) ...
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
double phi() const final
momentum azimuthal angle
const_iterator end() const
virtual double phi() const =0
momentum azimuthal angle