File indexing completed on 2024-04-06 12:09:56
0001 #include "DQMOffline/Trigger/plugins/JetDQM.h"
0002
0003
0004 JetDQM::JetDQM() = default;
0005
0006 JetDQM::~JetDQM() = default;
0007
0008 void JetDQM::initialise(const edm::ParameterSet& iConfig) {
0009 jetpt_variable_binning_ =
0010 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jetptBinning");
0011 jet1pt_variable_binning_ =
0012 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jet1ptBinning");
0013 jet2pt_variable_binning_ =
0014 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("jet2ptBinning");
0015 mjj_variable_binning_ =
0016 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<std::vector<double> >("mjjBinning");
0017 jeteta_binning_ =
0018 getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("jetetaPSet"));
0019 detajj_binning_ =
0020 getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("detajjPSet"));
0021 dphijj_binning_ =
0022 getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("dphijjPSet"));
0023 mindphijmet_binning_ = getHistoPSet(
0024 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("mindphijmetPSet"));
0025 ls_binning_ =
0026 getHistoPSet(iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("jetlsPSet"));
0027 }
0028
0029 void JetDQM::bookHistograms(DQMStore::IBooker& ibooker) {
0030 std::string histname, histtitle;
0031
0032 histname = "jet1pt";
0033 histtitle = "PFJet1 pT";
0034 bookME(ibooker, jet1ptME_, histname, histtitle, jet1pt_variable_binning_);
0035 setMETitle(jet1ptME_, "PFJet1 p_{T} [GeV]", "events / [GeV]");
0036
0037 histname = "jet2pt";
0038 histtitle = "PFJet2 pT";
0039 bookME(ibooker, jet2ptME_, histname, histtitle, jet2pt_variable_binning_);
0040 setMETitle(jet2ptME_, "PFJet2 p_{T} [GeV]", "events / [GeV]");
0041
0042 histname = "jet1eta";
0043 histtitle = "PFJet1 eta";
0044 bookME(ibooker, jet1etaME_, histname, histtitle, jeteta_binning_.nbins, jeteta_binning_.xmin, jeteta_binning_.xmax);
0045 setMETitle(jet1etaME_, "PFJet1 #eta", "events / [rad]");
0046
0047 histname = "jet2eta";
0048 histtitle = "PFJet2 eta";
0049 bookME(ibooker, jet2etaME_, histname, histtitle, jeteta_binning_.nbins, jeteta_binning_.xmin, jeteta_binning_.xmax);
0050 setMETitle(jet2etaME_, "PFJet2 #eta", "events / [rad]");
0051
0052 histname = "cjetpt";
0053 histtitle = "central PFJet pT";
0054 bookME(ibooker, cjetptME_, histname, histtitle, jetpt_variable_binning_);
0055 setMETitle(cjetptME_, "central PFJet p_{T} [GeV]", "events / [GeV]");
0056
0057 histname = "fjetpt";
0058 histtitle = "forward PFJet pT";
0059 bookME(ibooker, fjetptME_, histname, histtitle, jetpt_variable_binning_);
0060 setMETitle(fjetptME_, "forward PFJet p_{T} [GeV]", "events / [GeV]");
0061
0062 histname = "cjeteta";
0063 histtitle = "central PFJet eta";
0064 bookME(ibooker, cjetetaME_, histname, histtitle, jeteta_binning_.nbins, jeteta_binning_.xmin, jeteta_binning_.xmax);
0065 setMETitle(cjetetaME_, "central PFJet #eta", "events / [rad]");
0066
0067 histname = "fjeteta";
0068 histtitle = "forward PFJet eta";
0069 bookME(ibooker, fjetetaME_, histname, histtitle, jeteta_binning_.nbins, jeteta_binning_.xmin, jeteta_binning_.xmax);
0070 setMETitle(fjetetaME_, "forward PFJet #eta", "events / [rad]");
0071
0072 histname = "mjj";
0073 histtitle = "PFDiJet M";
0074 bookME(ibooker, mjjME_, histname, histtitle, mjj_variable_binning_);
0075 setMETitle(mjjME_, "PFDiJet M [GeV]", "events / [GeV]");
0076
0077 histname = "detajj";
0078 histtitle = "PFDiJet DeltaEta";
0079 bookME(ibooker, detajjME_, histname, histtitle, detajj_binning_.nbins, detajj_binning_.xmin, detajj_binning_.xmax);
0080 setMETitle(detajjME_, "PFDiJet #Delta#eta", "events / [rad]");
0081
0082 histname = "dphijj";
0083 histtitle = "PFDiJet DeltaPhi";
0084 bookME(ibooker, dphijjME_, histname, histtitle, dphijj_binning_.nbins, dphijj_binning_.xmin, dphijj_binning_.xmax);
0085 setMETitle(dphijjME_, "PFDiJet #Delta#phi", "events / [rad]");
0086
0087 histname = "mindphijmet";
0088 histtitle = "minDeltaPhi(PFJets,MET)";
0089 bookME(ibooker,
0090 mindphijmetME_,
0091 histname,
0092 histtitle,
0093 mindphijmet_binning_.nbins,
0094 mindphijmet_binning_.xmin,
0095 mindphijmet_binning_.xmax);
0096 setMETitle(mindphijmetME_, "min#Delta#phi(jets,MET)", "events / [rad]");
0097
0098 histname = "jet1etaVsLS";
0099 histtitle = "PFJet1 eta vs LS";
0100 bookME(ibooker,
0101 jet1etaVsLS_,
0102 histname,
0103 histtitle,
0104 ls_binning_.nbins,
0105 ls_binning_.xmin,
0106 ls_binning_.xmax,
0107 jeteta_binning_.xmin,
0108 jeteta_binning_.xmax);
0109 setMETitle(jet1etaVsLS_, "LS", "PF Jet1 #eta");
0110
0111 histname = "mjjVsLS";
0112 histtitle = "PFDiJet M vs LS";
0113 bookME(ibooker, mjjVsLS_, histname, histtitle, ls_binning_.nbins, ls_binning_.xmin, ls_binning_.xmax, 0, 14000);
0114 setMETitle(mjjVsLS_, "LS", "PFDiJet M [GeV]");
0115
0116 histname = "mindphijmetVsLS";
0117 histtitle = "minDeltaPhi(PFJets,MET) vs LS";
0118 bookME(ibooker,
0119 mindphijmetVsLS_,
0120 histname,
0121 histtitle,
0122 ls_binning_.nbins,
0123 ls_binning_.xmin,
0124 ls_binning_.xmax,
0125 mindphijmet_binning_.xmin,
0126 mindphijmet_binning_.xmax);
0127 setMETitle(mindphijmetVsLS_, "LS", "min#Delta#phi(jets,MET)");
0128 }
0129
0130 void JetDQM::fillHistograms(const std::vector<reco::PFJet>& jets,
0131 const reco::PFMET& pfmet,
0132 const int ls,
0133 const bool passCond) {
0134
0135 if (!jets.empty()) {
0136 double eta1 = jets[0].eta();
0137 jet1ptME_.denominator->Fill(jets[0].pt());
0138 jet1etaME_.denominator->Fill(eta1);
0139 jet1etaVsLS_.denominator->Fill(ls, eta1);
0140 if (jets.size() > 1) {
0141 double eta2 = jets[1].eta();
0142 jet2ptME_.denominator->Fill(jets[1].pt());
0143 jet2etaME_.denominator->Fill(eta2);
0144 if (fabs(eta1) < fabs(eta2)) {
0145 cjetetaME_.denominator->Fill(eta1);
0146 fjetetaME_.denominator->Fill(eta2);
0147 cjetptME_.denominator->Fill(jets[0].pt());
0148 fjetptME_.denominator->Fill(jets[1].pt());
0149 } else {
0150 cjetetaME_.denominator->Fill(eta2);
0151 fjetetaME_.denominator->Fill(eta1);
0152 cjetptME_.denominator->Fill(jets[1].pt());
0153 fjetptME_.denominator->Fill(jets[0].pt());
0154 }
0155 double mass = (jets[0].p4() + jets[1].p4()).mass();
0156 mjjME_.denominator->Fill(mass);
0157 mjjVsLS_.denominator->Fill(ls, mass);
0158 detajjME_.denominator->Fill(fabs(eta1 - eta2));
0159 dphijjME_.denominator->Fill(fabs(reco::deltaPhi(jets[0].phi(), jets[1].phi())));
0160
0161 double mindphi = fabs(reco::deltaPhi(jets[0].phi(), pfmet.phi()));
0162 for (unsigned ij(0); ij < jets.size(); ++ij) {
0163 if (ij > 4)
0164 break;
0165 double dphi = fabs(reco::deltaPhi(jets[ij].phi(), pfmet.phi()));
0166 if (dphi < mindphi)
0167 mindphi = dphi;
0168 }
0169
0170 mindphijmetME_.denominator->Fill(mindphi);
0171 mindphijmetVsLS_.denominator->Fill(ls, mindphi);
0172 }
0173 }
0174
0175
0176 if (passCond) {
0177
0178 if (!jets.empty()) {
0179 double eta1 = jets[0].eta();
0180 jet1ptME_.numerator->Fill(jets[0].pt());
0181 jet1etaME_.numerator->Fill(eta1);
0182 jet1etaVsLS_.numerator->Fill(ls, eta1);
0183 if (jets.size() > 1) {
0184 double eta2 = jets[1].eta();
0185 jet2ptME_.numerator->Fill(jets[1].pt());
0186 jet2etaME_.numerator->Fill(eta2);
0187 if (fabs(eta1) < fabs(eta2)) {
0188 cjetetaME_.numerator->Fill(eta1);
0189 fjetetaME_.numerator->Fill(eta2);
0190 cjetptME_.numerator->Fill(jets[0].pt());
0191 fjetptME_.numerator->Fill(jets[1].pt());
0192 } else {
0193 cjetetaME_.numerator->Fill(eta2);
0194 fjetetaME_.numerator->Fill(eta1);
0195 cjetptME_.numerator->Fill(jets[1].pt());
0196 fjetptME_.numerator->Fill(jets[0].pt());
0197 }
0198 double mass = (jets[0].p4() + jets[1].p4()).mass();
0199 mjjME_.numerator->Fill(mass);
0200 mjjVsLS_.numerator->Fill(ls, mass);
0201 detajjME_.numerator->Fill(fabs(eta1 - eta2));
0202 dphijjME_.numerator->Fill(fabs(reco::deltaPhi(jets[0].phi(), jets[1].phi())));
0203
0204 double mindphi = fabs(reco::deltaPhi(jets[0].phi(), pfmet.phi()));
0205 for (unsigned ij(0); ij < jets.size(); ++ij) {
0206 if (ij > 4)
0207 break;
0208 double dphi = fabs(reco::deltaPhi(jets[ij].phi(), pfmet.phi()));
0209 if (dphi < mindphi)
0210 mindphi = dphi;
0211 }
0212
0213 mindphijmetME_.numerator->Fill(mindphi);
0214 mindphijmetVsLS_.numerator->Fill(ls, mindphi);
0215 }
0216 }
0217 }
0218 }
0219
0220 void JetDQM::fillJetDescription(edm::ParameterSetDescription& histoPSet) {
0221 edm::ParameterSetDescription jetetaPSet;
0222 fillHistoPSetDescription(jetetaPSet);
0223 histoPSet.add<edm::ParameterSetDescription>("jetetaPSet", jetetaPSet);
0224
0225 edm::ParameterSetDescription detajjPSet;
0226 fillHistoPSetDescription(detajjPSet);
0227 histoPSet.add<edm::ParameterSetDescription>("detajjPSet", detajjPSet);
0228
0229 edm::ParameterSetDescription dphijjPSet;
0230 fillHistoPSetDescription(dphijjPSet);
0231 histoPSet.add<edm::ParameterSetDescription>("dphijjPSet", dphijjPSet);
0232
0233 edm::ParameterSetDescription mindphijmetPSet;
0234 fillHistoPSetDescription(mindphijmetPSet);
0235 histoPSet.add<edm::ParameterSetDescription>("mindphijmetPSet", mindphijmetPSet);
0236
0237 std::vector<double> bins = {0., 20., 40., 60., 80., 100., 120., 140., 160., 180., 200., 220.,
0238 240., 260., 280., 300., 350., 400., 450., 500, 750, 1000., 1500.};
0239 histoPSet.add<std::vector<double> >("jetptBinning", bins);
0240
0241 std::vector<double> pt1bins = {0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
0242 180., 210., 240., 270., 300., 330., 360., 400., 450., 500., 750., 1000., 1500.};
0243 histoPSet.add<std::vector<double> >("jet1ptBinning", pt1bins);
0244
0245 std::vector<double> pt2bins = {0., 20., 40., 45., 50., 55., 60., 65., 70., 80., 90., 100.,
0246 110., 120., 150., 180., 210., 240., 270., 300., 350., 400., 1000.};
0247 histoPSet.add<std::vector<double> >("jet2ptBinning", pt2bins);
0248
0249 std::vector<double> mjjbins = {0., 200, 400, 600, 620, 640, 660, 680, 700, 720, 740, 760, 780, 800,
0250 850, 900, 950, 1000, 1200, 1400, 1600, 1800, 2000, 2500, 3000, 4000, 6000};
0251 histoPSet.add<std::vector<double> >("mjjBinning", mjjbins);
0252
0253 edm::ParameterSetDescription lsPSet;
0254 fillHistoLSPSetDescription(lsPSet);
0255 histoPSet.add<edm::ParameterSetDescription>("jetlsPSet", lsPSet);
0256 }