File indexing completed on 2024-04-06 12:09:53
0001 #include <string>
0002 #include <vector>
0003 #include <map>
0004
0005 #include "FWCore/Utilities/interface/EDGetToken.h"
0006 #include "FWCore/Framework/interface/Frameworkfwd.h"
0007 #include "FWCore/Framework/interface/Event.h"
0008 #include "FWCore/Framework/interface/MakerMacros.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 #include "FWCore/ServiceRegistry/interface/Service.h"
0011 #include "FWCore/Framework/interface/MakerMacros.h"
0012 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0013 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0014
0015 #include "DQMServices/Core/interface/DQMStore.h"
0016 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0017 #include "DQMOffline/Trigger/plugins/TriggerDQMBase.h"
0018 #include "CommonTools/TriggerUtils/interface/GenericTriggerEventFlag.h"
0019 #include "CommonTools/Utils/interface/StringCutObjectSelector.h"
0020
0021 #include "DataFormats/METReco/interface/PFMET.h"
0022 #include "DataFormats/METReco/interface/PFMETCollection.h"
0023 #include "DataFormats/JetReco/interface/PFJet.h"
0024 #include "DataFormats/JetReco/interface/PFJetCollection.h"
0025 #include "DataFormats/MuonReco/interface/Muon.h"
0026 #include "DataFormats/MuonReco/interface/MuonFwd.h"
0027 #include "DataFormats/TrackReco/interface/Track.h"
0028 #include "DataFormats/TrackReco/interface/TrackFwd.h"
0029 #include "DataFormats/EgammaCandidates/interface/GsfElectron.h"
0030 #include "DataFormats/EgammaCandidates/interface/GsfElectronFwd.h"
0031
0032 class DiJetMonitor : public DQMEDAnalyzer, public TriggerDQMBase {
0033 public:
0034 typedef dqm::reco::MonitorElement MonitorElement;
0035 typedef dqm::reco::DQMStore DQMStore;
0036
0037 DiJetMonitor(const edm::ParameterSet&);
0038 ~DiJetMonitor() throw() override;
0039 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0040
0041 protected:
0042 void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0043 void analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) override;
0044 bool dijet_selection(double eta_1,
0045 double phi_1,
0046 double eta_2,
0047 double phi_2,
0048 double pt_1,
0049 double pt_2,
0050 int& tag_id,
0051 int& probe_id,
0052 int Event);
0053
0054 private:
0055 const std::string folderName_;
0056
0057 const bool requireValidHLTPaths_;
0058 bool hltPathsAreValid_;
0059
0060 edm::EDGetTokenT<reco::PFMETCollection> metToken_;
0061 edm::EDGetTokenT<reco::GsfElectronCollection> eleToken_;
0062 edm::EDGetTokenT<reco::MuonCollection> muoToken_;
0063 edm::EDGetTokenT<reco::PFJetCollection> dijetSrc_;
0064
0065 MEbinning dijetpt_binning_;
0066 MEbinning dijetptThr_binning_;
0067
0068 ObjME jetpt1ME_;
0069 ObjME jetpt2ME_;
0070 ObjME jetPhi1ME_;
0071 ObjME jetPhi2ME_;
0072 ObjME jetEta1ME_;
0073 ObjME jetEta2ME_;
0074 ObjME jetphiTagME_;
0075 ObjME jetptAvgaME_;
0076 ObjME jetptAvgaThrME_;
0077 ObjME jetptAvgbME_;
0078 ObjME jetptTagME_;
0079 ObjME jetptPrbME_;
0080 ObjME jetptAsyME_;
0081 ObjME jetetaPrbME_;
0082 ObjME jetetaTagME_;
0083 ObjME jetphiPrbME_;
0084 ObjME jetAsyEtaME_;
0085 ObjME jetEtaPhiME_;
0086
0087 std::unique_ptr<GenericTriggerEventFlag> num_genTriggerEventFlag_;
0088 std::unique_ptr<GenericTriggerEventFlag> den_genTriggerEventFlag_;
0089
0090 int nmuons_;
0091 double ptcut_;
0092
0093
0094 const double DiJet_MAX_PHI = 3.2;
0095
0096 unsigned int DiJet_N_PHI = 32;
0097 MEbinning dijet_phi_binning{DiJet_N_PHI, -DiJet_MAX_PHI, DiJet_MAX_PHI};
0098
0099 const double DiJet_MAX_ETA = 5;
0100
0101 unsigned int DiJet_N_ETA = 20;
0102 MEbinning dijet_eta_binning{DiJet_N_ETA, -DiJet_MAX_ETA, DiJet_MAX_ETA};
0103
0104 const double MAX_asy = 1;
0105 const double MIN_asy = -1;
0106
0107 unsigned int N_asy = 50;
0108 MEbinning asy_binning{N_asy, MIN_asy, MAX_asy};
0109 };
0110
0111 DiJetMonitor::DiJetMonitor(const edm::ParameterSet& iConfig)
0112 : folderName_(iConfig.getParameter<std::string>("FolderName")),
0113 requireValidHLTPaths_(iConfig.getParameter<bool>("requireValidHLTPaths")),
0114 hltPathsAreValid_(false),
0115 dijetSrc_(mayConsume<reco::PFJetCollection>(iConfig.getParameter<edm::InputTag>("dijetSrc"))),
0116 dijetpt_binning_(getHistoPSet(
0117 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("dijetPSet"))),
0118 dijetptThr_binning_(getHistoPSet(
0119 iConfig.getParameter<edm::ParameterSet>("histoPSet").getParameter<edm::ParameterSet>("dijetPtThrPSet"))),
0120 num_genTriggerEventFlag_(new GenericTriggerEventFlag(
0121 iConfig.getParameter<edm::ParameterSet>("numGenericTriggerEventPSet"), consumesCollector(), *this)),
0122 den_genTriggerEventFlag_(new GenericTriggerEventFlag(
0123 iConfig.getParameter<edm::ParameterSet>("denGenericTriggerEventPSet"), consumesCollector(), *this)),
0124 ptcut_(iConfig.getParameter<double>("ptcut")) {}
0125
0126 DiJetMonitor::~DiJetMonitor() throw() {
0127 if (num_genTriggerEventFlag_) {
0128 num_genTriggerEventFlag_.reset();
0129 }
0130 if (den_genTriggerEventFlag_) {
0131 den_genTriggerEventFlag_.reset();
0132 }
0133 }
0134
0135 void DiJetMonitor::bookHistograms(DQMStore::IBooker& ibooker, edm::Run const& iRun, edm::EventSetup const& iSetup) {
0136
0137 if (num_genTriggerEventFlag_ && num_genTriggerEventFlag_->on()) {
0138 num_genTriggerEventFlag_->initRun(iRun, iSetup);
0139 }
0140 if (den_genTriggerEventFlag_ && den_genTriggerEventFlag_->on()) {
0141 den_genTriggerEventFlag_->initRun(iRun, iSetup);
0142 }
0143
0144
0145 hltPathsAreValid_ = (num_genTriggerEventFlag_ && den_genTriggerEventFlag_ && num_genTriggerEventFlag_->on() &&
0146 den_genTriggerEventFlag_->on() && num_genTriggerEventFlag_->allHLTPathsAreValid() &&
0147 den_genTriggerEventFlag_->allHLTPathsAreValid());
0148
0149
0150
0151 if (requireValidHLTPaths_ and (not hltPathsAreValid_)) {
0152 return;
0153 }
0154
0155 std::string histname, histtitle;
0156 std::string currentFolder = folderName_;
0157 ibooker.setCurrentFolder(currentFolder);
0158
0159 histname = "jetpt1";
0160 histtitle = "leading Jet Pt";
0161 bookME(ibooker, jetpt1ME_, histname, histtitle, dijetpt_binning_.nbins, dijetpt_binning_.xmin, dijetpt_binning_.xmax);
0162 setMETitle(jetpt1ME_, "Pt_1 [GeV]", "events");
0163
0164 histname = "jetpt2";
0165 histtitle = "second leading Jet Pt";
0166 bookME(ibooker, jetpt2ME_, histname, histtitle, dijetpt_binning_.nbins, dijetpt_binning_.xmin, dijetpt_binning_.xmax);
0167 setMETitle(jetpt2ME_, "Pt_2 [GeV]", "events");
0168
0169 histname = "jetphi1";
0170 histtitle = "leading Jet Phi";
0171 bookME(
0172 ibooker, jetPhi1ME_, histname, histtitle, dijet_phi_binning.nbins, dijet_phi_binning.xmin, dijet_phi_binning.xmax);
0173 setMETitle(jetPhi1ME_, "Jet_Phi_1", "events");
0174
0175 histname = "jetphi2";
0176 histtitle = "second leading Jet Phi";
0177 bookME(
0178 ibooker, jetPhi2ME_, histname, histtitle, dijet_phi_binning.nbins, dijet_phi_binning.xmin, dijet_phi_binning.xmax);
0179 setMETitle(jetPhi2ME_, "Jet_Phi_2", "events");
0180
0181 histname = "jeteta1";
0182 histtitle = "leading Jet Eta";
0183 bookME(
0184 ibooker, jetEta1ME_, histname, histtitle, dijet_eta_binning.nbins, dijet_eta_binning.xmin, dijet_eta_binning.xmax);
0185 setMETitle(jetEta1ME_, "Jet_Eta_1", "events");
0186
0187 histname = "jeteta2";
0188 histtitle = "second leading Jet Eta";
0189 bookME(
0190 ibooker, jetEta2ME_, histname, histtitle, dijet_eta_binning.nbins, dijet_eta_binning.xmin, dijet_eta_binning.xmax);
0191 setMETitle(jetEta2ME_, "Jet_Eta_2", "events");
0192
0193 histname = "jetptAvgB";
0194 histtitle = "Pt average before offline selection";
0195 bookME(
0196 ibooker, jetptAvgbME_, histname, histtitle, dijetpt_binning_.nbins, dijetpt_binning_.xmin, dijetpt_binning_.xmax);
0197 setMETitle(jetptAvgbME_, "(pt_1 + pt_2)*0.5 [GeV]", "events");
0198
0199 histname = "jetptAvgA";
0200 histtitle = "Pt average after offline selection";
0201 bookME(
0202 ibooker, jetptAvgaME_, histname, histtitle, dijetpt_binning_.nbins, dijetpt_binning_.xmin, dijetpt_binning_.xmax);
0203 setMETitle(jetptAvgaME_, "(pt_1 + pt_2)*0.5 [GeV]", "events");
0204
0205 histname = "jetptAvgAThr";
0206 histtitle = "Pt average after offline selection";
0207 bookME(ibooker,
0208 jetptAvgaThrME_,
0209 histname,
0210 histtitle,
0211 dijetptThr_binning_.nbins,
0212 dijetptThr_binning_.xmin,
0213 dijetptThr_binning_.xmax);
0214 setMETitle(jetptAvgaThrME_, "(pt_1 + pt_2)*0.5 [GeV]", "events");
0215
0216 histname = "jetptTag";
0217 histtitle = "Tag Jet Pt";
0218 bookME(
0219 ibooker, jetptTagME_, histname, histtitle, dijetpt_binning_.nbins, dijetpt_binning_.xmin, dijetpt_binning_.xmax);
0220 setMETitle(jetptTagME_, "Pt_tag [GeV]", "events ");
0221
0222 histname = "jetptPrb";
0223 histtitle = "Probe Jet Pt";
0224 bookME(
0225 ibooker, jetptPrbME_, histname, histtitle, dijetpt_binning_.nbins, dijetpt_binning_.xmin, dijetpt_binning_.xmax);
0226 setMETitle(jetptPrbME_, "Pt_prb [GeV]", "events");
0227
0228 histname = "jetptAsym";
0229 histtitle = "Jet Pt Asymetry";
0230 bookME(ibooker, jetptAsyME_, histname, histtitle, asy_binning.nbins, asy_binning.xmin, asy_binning.xmax);
0231 setMETitle(jetptAsyME_, "(pt_prb - pt_tag)/(pt_prb + pt_tag)", "events");
0232
0233 histname = "jetetaPrb";
0234 histtitle = "Probe Jet eta";
0235 bookME(ibooker,
0236 jetetaPrbME_,
0237 histname,
0238 histtitle,
0239 dijet_eta_binning.nbins,
0240 dijet_eta_binning.xmin,
0241 dijet_eta_binning.xmax);
0242 setMETitle(jetetaPrbME_, "Eta_probe #eta", "events");
0243
0244 histname = "jetetaTag";
0245 histtitle = "Tag Jet eta";
0246 bookME(ibooker,
0247 jetetaTagME_,
0248 histname,
0249 histtitle,
0250 dijet_eta_binning.nbins,
0251 dijet_eta_binning.xmin,
0252 dijet_eta_binning.xmax);
0253 setMETitle(jetetaTagME_, "Eta_tag #eta", "events");
0254
0255 histname = "ptAsymVSetaPrb";
0256 histtitle = "Pt_Asym vs eta_prb";
0257 bookME(ibooker,
0258 jetAsyEtaME_,
0259 histname,
0260 histtitle,
0261 asy_binning.nbins,
0262 asy_binning.xmin,
0263 asy_binning.xmax,
0264 dijet_eta_binning.nbins,
0265 dijet_eta_binning.xmin,
0266 dijet_eta_binning.xmax);
0267 setMETitle(jetAsyEtaME_, "(pt_prb - pt_tag)/(pt_prb + pt_tag)", "Eta_probe #eta");
0268
0269 histname = "etaPrbVSphiPrb";
0270 histtitle = "eta_prb vs phi_prb";
0271 bookME(ibooker,
0272 jetEtaPhiME_,
0273 histname,
0274 histtitle,
0275 dijet_eta_binning.nbins,
0276 dijet_eta_binning.xmin,
0277 dijet_eta_binning.xmax,
0278 dijet_phi_binning.nbins,
0279 dijet_phi_binning.xmin,
0280 dijet_phi_binning.xmax);
0281 setMETitle(jetEtaPhiME_, "Eta_probe #eta", "Phi_probe #phi");
0282
0283 histname = "jetphiPrb";
0284 histtitle = "Probe Jet phi";
0285 bookME(ibooker,
0286 jetphiPrbME_,
0287 histname,
0288 histtitle,
0289 dijet_phi_binning.nbins,
0290 dijet_phi_binning.xmin,
0291 dijet_phi_binning.xmax);
0292 setMETitle(jetphiPrbME_, "Phi_probe #phi", "events");
0293
0294 histname = "jetphiTag";
0295 histtitle = "Tag Jet phi";
0296 bookME(ibooker,
0297 jetphiTagME_,
0298 histname,
0299 histtitle,
0300 dijet_phi_binning.nbins,
0301 dijet_phi_binning.xmin,
0302 dijet_phi_binning.xmax);
0303 setMETitle(jetphiTagME_, "Phi_tag #phi", "events");
0304 }
0305
0306 void DiJetMonitor::analyze(edm::Event const& iEvent, edm::EventSetup const& iSetup) {
0307
0308
0309 if (requireValidHLTPaths_ and (not hltPathsAreValid_)) {
0310 return;
0311 }
0312
0313
0314 if (den_genTriggerEventFlag_->on() && !den_genTriggerEventFlag_->accept(iEvent, iSetup))
0315 return;
0316
0317 std::vector<double> v_jetpt;
0318 std::vector<double> v_jeteta;
0319 std::vector<double> v_jetphi;
0320
0321 v_jetpt.clear();
0322 v_jeteta.clear();
0323 v_jetphi.clear();
0324
0325 edm::Handle<reco::PFJetCollection> offjets;
0326 iEvent.getByToken(dijetSrc_, offjets);
0327 if (!offjets.isValid()) {
0328 edm::LogWarning("DiJetMonitor") << "DiJet handle not valid \n";
0329 return;
0330 }
0331 for (reco::PFJetCollection::const_iterator ibegin = offjets->begin(), iend = offjets->end(), ijet = ibegin;
0332 ijet != iend;
0333 ++ijet) {
0334 if (ijet->pt() < ptcut_) {
0335 continue;
0336 }
0337 v_jetpt.push_back(ijet->pt());
0338 v_jeteta.push_back(ijet->eta());
0339 v_jetphi.push_back(ijet->phi());
0340 }
0341 if (v_jetpt.size() < 2) {
0342 return;
0343 }
0344 double pt_1 = v_jetpt[0];
0345 double eta_1 = v_jeteta[0];
0346 double phi_1 = v_jetphi[0];
0347 double pt_2 = v_jetpt[1];
0348 double eta_2 = v_jeteta[1];
0349 double phi_2 = v_jetphi[1];
0350 double pt_avg_b = (pt_1 + pt_2) * 0.5;
0351 int tag_id = -999, probe_id = -999;
0352
0353 jetpt1ME_.denominator->Fill(pt_1);
0354 jetpt2ME_.denominator->Fill(pt_2);
0355 jetPhi1ME_.denominator->Fill(phi_1);
0356 jetPhi2ME_.denominator->Fill(phi_2);
0357 jetEta1ME_.denominator->Fill(eta_1);
0358 jetEta2ME_.denominator->Fill(eta_2);
0359 jetptAvgbME_.denominator->Fill(pt_avg_b);
0360
0361 if (dijet_selection(eta_1, phi_1, eta_2, phi_2, pt_1, pt_2, tag_id, probe_id, iEvent.id().event())) {
0362 if (tag_id == 0 && probe_id == 1) {
0363 double pt_asy = (pt_2 - pt_1) / (pt_1 + pt_2);
0364 double pt_avg = (pt_1 + pt_2) * 0.5;
0365 jetptAvgaME_.denominator->Fill(pt_avg);
0366 jetptAvgaThrME_.denominator->Fill(pt_avg);
0367 jetptTagME_.denominator->Fill(pt_1);
0368 jetptPrbME_.denominator->Fill(pt_2);
0369 jetetaPrbME_.denominator->Fill(eta_2);
0370 jetetaTagME_.denominator->Fill(eta_1);
0371 jetptAsyME_.denominator->Fill(pt_asy);
0372 jetphiPrbME_.denominator->Fill(phi_2);
0373 jetphiTagME_.denominator->Fill(phi_1);
0374 jetAsyEtaME_.denominator->Fill(pt_asy, eta_2);
0375 jetEtaPhiME_.denominator->Fill(eta_2, phi_2);
0376 }
0377 if (tag_id == 1 && probe_id == 0) {
0378 double pt_asy = (pt_1 - pt_2) / (pt_2 + pt_1);
0379 double pt_avg = (pt_2 + pt_1) * 0.5;
0380 jetptAvgaME_.denominator->Fill(pt_avg);
0381 jetptAvgaThrME_.denominator->Fill(pt_avg);
0382 jetptTagME_.denominator->Fill(pt_2);
0383 jetptPrbME_.denominator->Fill(pt_1);
0384 jetetaPrbME_.denominator->Fill(eta_1);
0385 jetetaTagME_.denominator->Fill(eta_2);
0386 jetptAsyME_.denominator->Fill(pt_asy);
0387 jetphiPrbME_.denominator->Fill(phi_1);
0388 jetphiTagME_.denominator->Fill(phi_2);
0389 jetAsyEtaME_.denominator->Fill(pt_asy, eta_1);
0390 jetEtaPhiME_.denominator->Fill(eta_1, phi_1);
0391 }
0392
0393 if (num_genTriggerEventFlag_->on() && !num_genTriggerEventFlag_->accept(iEvent, iSetup))
0394 return;
0395
0396 jetpt1ME_.numerator->Fill(pt_1);
0397 jetpt2ME_.numerator->Fill(pt_2);
0398 jetPhi1ME_.numerator->Fill(phi_1);
0399 jetPhi2ME_.numerator->Fill(phi_2);
0400 jetEta1ME_.numerator->Fill(eta_1);
0401 jetEta2ME_.numerator->Fill(eta_2);
0402 jetptAvgbME_.numerator->Fill(pt_avg_b);
0403
0404 if (tag_id == 0 && probe_id == 1) {
0405 double pt_asy = (pt_2 - pt_1) / (pt_1 + pt_2);
0406 double pt_avg = (pt_1 + pt_2) * 0.5;
0407 jetptAvgaME_.numerator->Fill(pt_avg);
0408 jetptAvgaThrME_.numerator->Fill(pt_avg);
0409 jetptTagME_.numerator->Fill(pt_1);
0410 jetptPrbME_.numerator->Fill(pt_2);
0411 jetetaPrbME_.numerator->Fill(eta_2);
0412 jetetaTagME_.numerator->Fill(eta_1);
0413 jetptAsyME_.numerator->Fill(pt_asy);
0414 jetphiPrbME_.numerator->Fill(phi_2);
0415 jetphiTagME_.numerator->Fill(phi_1);
0416 jetAsyEtaME_.numerator->Fill(pt_asy, eta_2);
0417 jetEtaPhiME_.numerator->Fill(eta_2, phi_2);
0418 }
0419 if (tag_id == 1 && probe_id == 0) {
0420 double pt_asy = (pt_1 - pt_2) / (pt_2 + pt_1);
0421 double pt_avg = (pt_2 + pt_1) * 0.5;
0422 jetptAvgaME_.numerator->Fill(pt_avg);
0423 jetptAvgaThrME_.numerator->Fill(pt_avg);
0424 jetptTagME_.numerator->Fill(pt_2);
0425 jetptPrbME_.numerator->Fill(pt_1);
0426 jetetaPrbME_.numerator->Fill(eta_1);
0427 jetetaTagME_.numerator->Fill(eta_2);
0428 jetptAsyME_.numerator->Fill(pt_asy);
0429 jetphiPrbME_.numerator->Fill(phi_1);
0430 jetphiTagME_.numerator->Fill(phi_2);
0431 jetAsyEtaME_.numerator->Fill(pt_asy, eta_1);
0432 jetEtaPhiME_.numerator->Fill(eta_1, phi_1);
0433 }
0434 }
0435 }
0436
0437
0438 bool DiJetMonitor::dijet_selection(double eta_1,
0439 double phi_1,
0440 double eta_2,
0441 double phi_2,
0442 double pt_1,
0443 double pt_2,
0444 int& tag_id,
0445 int& probe_id,
0446 int Event) {
0447 double etacut = 1.7;
0448 double phicut = 2.7;
0449
0450 bool passeta = (std::abs(eta_1) < etacut || std::abs(eta_2) < etacut);
0451
0452 float delta_phi_1_2 = (phi_1 - phi_2);
0453 bool other_cuts = (std::abs(delta_phi_1_2) >= phicut);
0454
0455 if (std::abs(eta_1) < etacut && std::abs(eta_2) > etacut) {
0456 tag_id = 0;
0457 probe_id = 1;
0458 } else if (std::abs(eta_2) < etacut && std::abs(eta_1) > etacut) {
0459 tag_id = 1;
0460 probe_id = 0;
0461 } else if (std::abs(eta_2) < etacut && std::abs(eta_1) < etacut) {
0462 int numb = Event % 2;
0463 if (numb == 0) {
0464 tag_id = 0;
0465 probe_id = 1;
0466 }
0467 if (numb == 1) {
0468 tag_id = 1;
0469 probe_id = 0;
0470 }
0471 }
0472
0473 return (passeta && other_cuts);
0474 }
0475
0476 void DiJetMonitor::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0477 edm::ParameterSetDescription desc;
0478 desc.add<std::string>("FolderName", "HLT/JME/Jets/AK4/PF");
0479 desc.add<bool>("requireValidHLTPaths", true);
0480
0481 desc.add<edm::InputTag>("met", edm::InputTag("pfMet"));
0482 desc.add<edm::InputTag>("dijetSrc", edm::InputTag("ak4PFJets"));
0483 desc.add<edm::InputTag>("electrons", edm::InputTag("gedGsfElectrons"));
0484 desc.add<edm::InputTag>("muons", edm::InputTag("muons"));
0485 desc.add<int>("njets", 0);
0486 desc.add<int>("nelectrons", 0);
0487 desc.add<double>("ptcut", 20);
0488
0489 edm::ParameterSetDescription genericTriggerEventPSet;
0490 GenericTriggerEventFlag::fillPSetDescription(genericTriggerEventPSet);
0491
0492 desc.add<edm::ParameterSetDescription>("numGenericTriggerEventPSet", genericTriggerEventPSet);
0493 desc.add<edm::ParameterSetDescription>("denGenericTriggerEventPSet", genericTriggerEventPSet);
0494
0495 edm::ParameterSetDescription histoPSet;
0496 edm::ParameterSetDescription dijetPSet;
0497 edm::ParameterSetDescription dijetPtThrPSet;
0498 fillHistoPSetDescription(dijetPSet);
0499 fillHistoPSetDescription(dijetPtThrPSet);
0500 histoPSet.add<edm::ParameterSetDescription>("dijetPSet", dijetPSet);
0501 histoPSet.add<edm::ParameterSetDescription>("dijetPtThrPSet", dijetPtThrPSet);
0502 std::vector<double> bins = {
0503 0., 20., 40., 60., 80., 90., 100., 110., 120., 130., 140., 150., 160.,
0504 170., 180., 190., 200., 220., 240., 260., 280., 300., 350., 400., 450., 1000.};
0505 histoPSet.add<std::vector<double> >("jetptBinning", bins);
0506
0507 edm::ParameterSetDescription lsPSet;
0508 fillHistoLSPSetDescription(lsPSet);
0509 histoPSet.add<edm::ParameterSetDescription>("lsPSet", lsPSet);
0510 desc.add<edm::ParameterSetDescription>("histoPSet", histoPSet);
0511
0512 descriptions.add("dijetMonitoring", desc);
0513 }
0514
0515 DEFINE_FWK_MODULE(DiJetMonitor);