60 #include "TLorentzVector.h"
73 using namespace trigger;
79 return c1.
pt() > c2.
pt();
91 typedef std::vector<edm::InputTag> vtag;
95 theTriggerResultsCollection =
102 ElectronToken_ = consumes<reco::GsfElectronCollection>(
104 PFElectronTokenEI_ = consumes<reco::PFCandidateCollection>(
107 MuonToken_ = consumes<reco::MuonCollection>(
109 PFMuonTokenEI_ = consumes<reco::PFCandidateCollection>(
112 PhotonToken_ = consumes<reco::PhotonCollection>(
116 CaloJetToken_ = consumes<reco::CaloJetCollection>(
118 PFJetToken_ = consumes<reco::PFJetCollection>(
120 PFJetTokenEI_ = consumes<reco::PFJetCollection>(
124 CaloMETToken_ = consumes<reco::CaloMETCollection>(
126 PFMETToken_ = consumes<reco::PFMETCollection>(
128 PFMETTokenEI_ = consumes<reco::PFMETCollection>(
131 ecalBarrelRecHitToken_ =
133 "ecalBarrelRecHit",
InputTag(
"reducedEcalRecHitsEB")));
134 ecalEndcapRecHitToken_ =
136 "ecalEndcapRecHit",
InputTag(
"reducedEcalRecHitsEE")));
141 mj_monojet_ptPFJet_ = ps.
getParameter<
double>(
"mj_monojet_ptPFJet");
142 mj_monojet_ptPFMuon_ = ps.
getParameter<
double>(
"mj_monojet_ptPFMuon");
143 mj_monojet_ptPFElectron_ = ps.
getParameter<
double>(
"mj_monojet_ptPFElectron");
172 edm::LogInfo(
"ExoticaDQM") <<
"[ExoticaDQM]: Begining of Run";
175 bei_->setCurrentFolder(
"Physics/Exotica");
179 bool isConfigChanged =
false;
183 const std::string hltProcessName = theTriggerResultsCollection.process();
185 hltConfigProvider_.init(run, eSetup, hltProcessName, isConfigChanged);
204 bei->setCurrentFolder(
"Physics/Exotica/MultiJets");
206 bei->book1D(
"mj_monojet_pfchef",
"PFJetID CHEF", 50, 0.0, 1.0);
208 bei->book1D(
"mj_monojet_pfnhef",
"PFJetID NHEF", 50, 0.0, 1.0);
210 bei->book1D(
"mj_monojet_pfcemf",
"PFJetID CEMF", 50, 0.0, 1.0);
212 bei->book1D(
"mj_monojet_pfnemf",
"PFJetID NEMF", 50, 0.0, 1.0);
213 mj_monojet_pfJet1_pt =
214 bei->book1D(
"mj_monojet_pfJet1_pt",
"Pt of PFJet-1 (GeV)", 40, 0.0, 1000);
215 mj_monojet_pfJet2_pt =
216 bei->book1D(
"mj_monojet_pfJet2_pt",
"Pt of PFJet-2 (GeV)", 40, 0.0, 1000);
217 mj_monojet_pfJet1_eta =
218 bei->book1D(
"mj_monojet_pfJet1_eta",
"#eta(PFJet-1)", 50, -5.0, 5.0);
219 mj_monojet_pfJet2_eta =
220 bei->book1D(
"mj_monojet_pfJet2_eta",
"#eta(PFJet-2)", 50, -5.0, 5.0);
221 mj_monojet_pfJetMulti =
222 bei->book1D(
"mj_monojet_pfJetMulti",
"No. of PFJets", 10, 0., 10.);
223 mj_monojet_deltaPhiPFJet1PFJet2 =
224 bei->book1D(
"mj_monojet_deltaPhiPFJet1PFJet2",
225 "#Delta#phi(PFJet1, PFJet2)", 40, 0., 4.);
226 mj_monojet_deltaRPFJet1PFJet2 = bei->book1D(
227 "mj_monojet_deltaRPFJet1PFJet2",
"#DeltaR(PFJet1, PFJet2)", 50, 0., 10.);
228 mj_monojet_pfmetnomu =
229 bei->book1D(
"mj_monojet_pfmetnomu",
"PFMET no Mu", 100, 0.0, 500.0);
231 bei->book1D(
"mj_caloMet",
"Calo Missing E_{T}; GeV", 50, 0.0, 500);
232 mj_caloMet_phi = bei->book1D(
233 "mj_caloMet_phi",
"Calo Missing E_{T} #phi;#phi(MET)", 35, -3.5, 3.5);
234 mj_pfMet_et = bei->book1D(
"mj_pfMet",
"Pf Missing E_{T}; GeV", 50, 0.0, 500);
235 mj_pfMet_phi = bei->book1D(
"mj_pfMet_phi",
"Pf Missing E_{T} #phi;#phi(MET)",
242 bei->setCurrentFolder(
"Physics/Exotica/LongLived");
243 ll_gammajet_sMajMajPhot =
244 bei->book1D(
"ll_gammajet_sMajMajPhot",
"sMajMajPhot", 50, 0.0, 5.0);
245 ll_gammajet_sMinMinPhot =
246 bei->book1D(
"ll_gammajet_sMinMinPhot",
"sMinMinPhot", 50, 0.0, 5.0);
252 bei->setCurrentFolder(
"Physics/Exotica/EIComparison");
254 bei->book1D(
"ei_pfjet1_pt",
"Pt of PFJet-1 (EI) (GeV)", 40, 0.0, 1000);
256 bei->book1D(
"ei_pfmet_pt",
"Pt of PFMET (EI) (GeV)", 40, 0.0, 1000);
273 bool ValidCaloElectron =
274 iEvent.
getByToken(ElectronToken_, ElectronCollection_);
275 if (!ValidCaloElectron)
return;
277 bool ValidCaloMuon = iEvent.
getByToken(MuonToken_, MuonCollection_);
278 if (!ValidCaloMuon)
return;
280 bool ValidCaloPhoton = iEvent.
getByToken(PhotonToken_, PhotonCollection_);
281 if (!ValidCaloPhoton)
return;
283 bool ValidCaloJet = iEvent.
getByToken(CaloJetToken_, caloJetCollection_);
284 if (!ValidCaloJet)
return;
285 calojets = *caloJetCollection_;
287 bool ValidCaloMET = iEvent.
getByToken(CaloMETToken_, caloMETCollection_);
288 if (!ValidCaloMET)
return;
292 bool ValidPFJet = iEvent.
getByToken(PFJetToken_, pfJetCollection_);
293 if (!ValidPFJet)
return;
294 pfjets = *pfJetCollection_;
296 bool ValidPFMET = iEvent.
getByToken(PFMETToken_, pfMETCollection_);
297 if (!ValidPFMET)
return;
302 for (
int i = 0;
i < 2;
i++) {
325 CaloJetCollection::const_iterator calojet_ = calojets.begin();
326 for (; calojet_ != calojets.end(); ++calojet_) {
328 jetID->calculate(iEvent, *calojet_);
330 if (scale * calojet_->pt() > CaloJetPt[0]) {
331 CaloJetPt[1] = CaloJetPt[0];
332 CaloJetPx[1] = CaloJetPx[0];
333 CaloJetPy[1] = CaloJetPy[0];
334 CaloJetEta[1] = CaloJetEta[0];
335 CaloJetPhi[1] = CaloJetPhi[0];
336 CaloJetEMF[1] = CaloJetEMF[0];
337 CaloJetfHPD[1] = CaloJetfHPD[0];
338 CaloJetn90[1] = CaloJetn90[0];
340 CaloJetPt[0] = scale * calojet_->pt();
341 CaloJetPx[0] = scale * calojet_->px();
342 CaloJetPy[0] = scale * calojet_->py();
343 CaloJetEta[0] = calojet_->eta();
344 CaloJetPhi[0] = calojet_->phi();
345 CaloJetEMF[0] = calojet_->emEnergyFraction();
346 CaloJetfHPD[0] =
jetID->fHPD();
347 CaloJetn90[0] =
jetID->n90Hits();
348 }
else if (scale * calojet_->pt() < CaloJetPt[0] &&
349 scale * calojet_->pt() > CaloJetPt[1]) {
350 CaloJetPt[1] = scale * calojet_->pt();
351 CaloJetPx[1] = scale * calojet_->px();
352 CaloJetPy[1] = scale * calojet_->py();
353 CaloJetEta[1] = calojet_->eta();
354 CaloJetPhi[1] = calojet_->phi();
355 CaloJetEMF[1] = calojet_->emEnergyFraction();
356 CaloJetfHPD[1] =
jetID->fHPD();
357 CaloJetn90[1] =
jetID->n90Hits();
363 mj_monojet_countPFJet = 0;
366 PFJetCollection::const_iterator pfjet_ = pfjets.begin();
367 for (; pfjet_ != pfjets.end(); ++pfjet_) {
369 if (scale * pfjet_->pt() > PFJetPt[0]) {
370 PFJetPt[1] = PFJetPt[0];
371 PFJetPx[1] = PFJetPx[0];
372 PFJetPy[1] = PFJetPy[0];
373 PFJetEta[1] = PFJetEta[0];
374 PFJetPhi[1] = PFJetPhi[0];
375 PFJetNHEF[1] = PFJetNHEF[0];
376 PFJetCHEF[1] = PFJetCHEF[0];
377 PFJetNEMF[1] = PFJetNEMF[0];
378 PFJetCEMF[1] = PFJetCEMF[0];
380 PFJetPt[0] = scale * pfjet_->pt();
381 PFJetPx[0] = scale * pfjet_->px();
382 PFJetPy[0] = scale * pfjet_->py();
383 PFJetEta[0] = pfjet_->eta();
384 PFJetPhi[0] = pfjet_->phi();
385 PFJetNHEF[0] = pfjet_->neutralHadronEnergyFraction();
386 PFJetCHEF[0] = pfjet_->chargedHadronEnergyFraction();
387 PFJetNEMF[0] = pfjet_->neutralEmEnergyFraction();
388 PFJetCEMF[0] = pfjet_->chargedEmEnergyFraction();
389 }
else if (scale * pfjet_->pt() < PFJetPt[0] &&
390 scale * pfjet_->pt() > PFJetPt[1]) {
391 PFJetPt[1] = scale * pfjet_->pt();
392 PFJetPx[1] = scale * pfjet_->px();
393 PFJetPy[1] = scale * pfjet_->py();
394 PFJetEta[1] = pfjet_->eta();
395 PFJetPhi[1] = pfjet_->phi();
396 PFJetNHEF[1] = pfjet_->neutralHadronEnergyFraction();
397 PFJetCHEF[1] = pfjet_->chargedHadronEnergyFraction();
398 PFJetNEMF[1] = pfjet_->neutralEmEnergyFraction();
399 PFJetCEMF[1] = pfjet_->chargedEmEnergyFraction();
402 if (scale * pfjet_->pt() > mj_monojet_ptPFJet_) mj_monojet_countPFJet++;
408 analyzeMultiJets(iEvent);
411 analyzeLongLived(iEvent);
414 analyzeEventInterpretation(iEvent, iSetup);
434 if (PFJetPt[0] > 0.) {
435 mj_monojet_pfJet1_pt->Fill(PFJetPt[0]);
436 mj_monojet_pfJet1_eta->Fill(PFJetEta[0]);
437 mj_monojet_pfchef->Fill(PFJetCHEF[0]);
438 mj_monojet_pfnhef->Fill(PFJetNHEF[0]);
439 mj_monojet_pfcemf->Fill(PFJetCEMF[0]);
440 mj_monojet_pfnemf->Fill(PFJetNEMF[0]);
441 mj_monojet_pfJetMulti->Fill(mj_monojet_countPFJet);
443 if (PFJetPt[1] > 0.) {
444 mj_monojet_pfJet2_pt->Fill(PFJetPt[1]);
445 mj_monojet_pfJet2_eta->Fill(PFJetEta[1]);
446 mj_monojet_deltaPhiPFJet1PFJet2->Fill(
deltaPhi(PFJetPhi[0], PFJetPhi[1]));
447 mj_monojet_deltaRPFJet1PFJet2->Fill(
448 deltaR(PFJetEta[0], PFJetPhi[0], PFJetEta[1], PFJetPhi[1]));
454 mj_caloMet_et->Fill(met.
et());
455 mj_caloMet_phi->Fill(met.
phi());
459 const PFMET pfmet = pfmetcol->front();
460 mj_pfMet_et->Fill(pfmet.
et());
461 mj_pfMet_phi->Fill(pfmet.
phi());
471 iEvent.
getByToken(ecalBarrelRecHitToken_, ecalhitseb);
472 rhitseb = ecalhitseb.
product();
476 iEvent.
getByToken(ecalEndcapRecHitToken_, ecalhitsee);
477 rhitsee = ecalhitsee.
product();
480 reco::PhotonCollection::const_iterator photon = PhotonCollection_->begin();
481 for (; photon != PhotonCollection_->end(); ++photon) {
482 if (photon->energy() < 3.)
continue;
483 if (nPhot >= 40)
continue;
489 std::pair<DetId, float> maxRH =
490 EcalClusterTools::getMaximum(*theSeed, &(*rechits));
494 EcalClusterTools::cluster2ndMoments(*SCseed, *rechits);
497 ll_gammajet_sMajMajPhot->Fill(moments.
sMaj);
498 ll_gammajet_sMinMinPhot->Fill(moments.
sMin);
500 ll_gammajet_sMajMajPhot->Fill(-100.);
501 ll_gammajet_sMinMinPhot->Fill(-100.);
514 bool ValidPFElectronEI =
515 iEvent.
getByToken(PFElectronTokenEI_, pfElectronCollectionEI_);
516 if (!ValidPFElectronEI)
return;
517 pfelectronsEI = *pfElectronCollectionEI_;
520 bool ValidPFMuonEI = iEvent.
getByToken(PFMuonTokenEI_, pfMuonCollectionEI_);
521 if (!ValidPFMuonEI)
return;
522 pfmuonsEI = *pfMuonCollectionEI_;
525 bool ValidPFJetEI = iEvent.
getByToken(PFJetTokenEI_, pfJetCollectionEI_);
526 if (!ValidPFJetEI)
return;
527 pfjetsEI = *pfJetCollectionEI_;
530 bool ValidPFMETEI = iEvent.
getByToken(PFMETTokenEI_, pfMETCollectionEI_);
531 if (!ValidPFMETEI)
return;
538 PFJetCollection::const_iterator pfjet_ = pfjetsEI.begin();
539 for (; pfjet_ != pfjetsEI.end(); ++pfjet_) {
541 if (scale * pfjet_->pt() < PFJetEIPt)
continue;
542 PFJetEIPt = scale * pfjet_->pt();
543 PFJetEIPx = scale * pfjet_->px();
544 PFJetEIPy = scale * pfjet_->py();
545 PFJetEIEta = pfjet_->eta();
546 PFJetEIPhi = pfjet_->phi();
547 PFJetEINHEF = pfjet_->neutralHadronEnergyFraction();
548 PFJetEICHEF = pfjet_->chargedHadronEnergyFraction();
549 PFJetEINEMF = pfjet_->neutralEmEnergyFraction();
550 PFJetEICEMF = pfjet_->chargedEmEnergyFraction();
554 ei_pfjet1_pt->Fill(PFJetEIPt);
558 const PFMET pfmetEI = pfmetcolEI->front();
559 ei_pfmet_pt->Fill(pfmetEI.
et());
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
virtual double et() const GCC11_FINAL
transverse energy
virtual void analyzeLongLivedTrigger(edm::Event const &e)
virtual void beginLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
virtual void analyzeMultiJetsTrigger(edm::Event const &e)
ExoticaDQM(const edm::ParameterSet &ps)
virtual void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
virtual void analyzeEventInterpretation(edm::Event const &e, edm::EventSetup const &eSetup)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double correction(const LorentzVector &fJet) const
get correction using Jet information only
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
virtual float pt() const =0
transverse momentum
void bookHistos(DQMStore *bei)
virtual void beginRun(edm::Run const &run, edm::EventSetup const &eSetup)
double deltaR(double eta1, double eta2, double phi1, double phi2)
virtual void analyze(edm::Event const &e, edm::EventSetup const &eSetup)
T const * product() const
static const JetCorrector * getJetCorrector(const std::string &fName, const edm::EventSetup &fSetup)
retrieve corrector from the event setup. troughs exception if something is missing ...
virtual void analyzeMultiJets(edm::Event const &e)
virtual void analyzeLongLived(edm::Event const &e)
bool operator()(const Candidate &c1, const Candidate &c2) const
virtual void endRun(edm::Run const &run, edm::EventSetup const &eSetup)
std::vector< std::string > vstring