CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ExoticaDQM.cc
Go to the documentation of this file.
2 
3 #include <memory>
4 
5 // DQM
8 
9 // Framework
18 
19 // Candidate handling
26 
27 // Vertex utilities
30 
31 // Other
35 
36 // Math
44 
45 // vertexing
46 
47 // Transient tracks
55 
56 // JetCorrection
58 
59 // ROOT
60 #include "TLorentzVector.h"
61 
62 // STDLIB
63 #include <iostream>
64 #include <iomanip>
65 #include <stdio.h>
66 #include <string>
67 #include <sstream>
68 #include <math.h>
69 
70 using namespace edm;
71 using namespace std;
72 using namespace reco;
73 using namespace trigger;
74 
75 typedef vector<string> vstring;
76 
78  bool operator()(const Candidate& c1, const Candidate& c2) const {
79  return c1.pt() > c2.pt();
80  }
81 };
82 
83 //
84 // -- Constructor
85 //
87 
88  edm::LogInfo("ExoticaDQM") << " Starting ExoticaDQM "
89  << "\n";
90 
91  typedef std::vector<edm::InputTag> vtag;
92 
93  // Get parameters from configuration file
94  // Trigger
95  theTriggerResultsCollection =
96  ps.getParameter<InputTag>("triggerResultsCollection");
97  //
98  theTriggerForMultiJetsList = ps.getParameter<vstring>("triggerMultiJetsList");
99  theTriggerForLongLivedList = ps.getParameter<vstring>("triggerLongLivedList");
100 
101  //
102  ElectronToken_ = consumes<reco::GsfElectronCollection>(
103  ps.getParameter<InputTag>("electronCollection"));
104  PFElectronTokenEI_ = consumes<reco::PFCandidateCollection>(
105  ps.getParameter<InputTag>("pfelectronCollectionEI"));
106  //
107  MuonToken_ = consumes<reco::MuonCollection>(
108  ps.getParameter<InputTag>("muonCollection"));
109  PFMuonTokenEI_ = consumes<reco::PFCandidateCollection>(
110  ps.getParameter<InputTag>("pfmuonCollectionEI"));
111  //
112  PhotonToken_ = consumes<reco::PhotonCollection>(
113  ps.getParameter<InputTag>("photonCollection"));
114  // PFPhotonLabel_ = ps.getParameter<InputTag>("pfphotonCollection");
115  //
116  CaloJetToken_ = consumes<reco::CaloJetCollection>(
117  ps.getParameter<InputTag>("caloJetCollection"));
118  PFJetToken_ = consumes<reco::PFJetCollection>(
119  ps.getParameter<InputTag>("pfJetCollection"));
120  PFJetTokenEI_ = consumes<reco::PFJetCollection>(
121  ps.getParameter<InputTag>("pfJetCollectionEI"));
122 
123  //
124  CaloMETToken_ = consumes<reco::CaloMETCollection>(
125  ps.getParameter<InputTag>("caloMETCollection"));
126  PFMETToken_ = consumes<reco::PFMETCollection>(
127  ps.getParameter<InputTag>("pfMETCollection"));
128  PFMETTokenEI_ = consumes<reco::PFMETCollection>(
129  ps.getParameter<InputTag>("pfMETCollectionEI"));
130 
131  ecalBarrelRecHitToken_ =
132  consumes<EBRecHitCollection>(ps.getUntrackedParameter<InputTag>(
133  "ecalBarrelRecHit", InputTag("reducedEcalRecHitsEB")));
134  ecalEndcapRecHitToken_ =
135  consumes<EERecHitCollection>(ps.getUntrackedParameter<InputTag>(
136  "ecalEndcapRecHit", InputTag("reducedEcalRecHitsEE")));
137 
138  // Cuts - MultiJets
140  ps.getParameter<ParameterSet>("JetIDParams"), consumesCollector());
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");
144  CaloJetCorService_ = ps.getParameter<std::string>("CaloJetCorService");
145  PFJetCorService_ = ps.getParameter<std::string>("PFJetCorService");
146 
147  // just to initialize
148  // isValidHltConfig_ = false;
149 }
150 
151 //
152 // -- Destructor
153 //
155  edm::LogInfo("ExoticaDQM") << " Deleting ExoticaDQM "
156  << "\n";
157 }
158 
159 //
160 // -- Begin Job
161 //
163  nLumiSecs_ = 0;
164  nEvents_ = 0;
165  pi = 3.14159265;
166 }
167 
168 //
169 // -- Begin Run
170 //
171 void ExoticaDQM::beginRun(Run const& run, edm::EventSetup const& eSetup) {
172  edm::LogInfo("ExoticaDQM") << "[ExoticaDQM]: Begining of Run";
173 
174  bei_ = Service<DQMStore>().operator->();
175  bei_->setCurrentFolder("Physics/Exotica");
176  bookHistos(bei_);
177 
178  // passed as parameter to HLTConfigProvider::init(), not yet used
179  bool isConfigChanged = false;
180 
181  // isValidHltConfig_ used to short-circuit analyze() in case of problems
182  // const std::string hltProcessName( "HLT" );
183  const std::string hltProcessName = theTriggerResultsCollection.process();
184  isValidHltConfig_ =
185  hltConfigProvider_.init(run, eSetup, hltProcessName, isConfigChanged);
186 }
187 
188 //
189 // -- Begin Luminosity Block
190 //
192  edm::EventSetup const& context) {
193  // edm::LogInfo ("ExoticaDQM") <<"[ExoticaDQM]: Begin of LS transition";
194 }
195 
196 //
197 // -- Book histograms
198 //
200 
201  bei->cd();
202 
203  //--- Multijets
204  bei->setCurrentFolder("Physics/Exotica/MultiJets");
205  mj_monojet_pfchef =
206  bei->book1D("mj_monojet_pfchef", "PFJetID CHEF", 50, 0.0, 1.0);
207  mj_monojet_pfnhef =
208  bei->book1D("mj_monojet_pfnhef", "PFJetID NHEF", 50, 0.0, 1.0);
209  mj_monojet_pfcemf =
210  bei->book1D("mj_monojet_pfcemf", "PFJetID CEMF", 50, 0.0, 1.0);
211  mj_monojet_pfnemf =
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);
230  mj_caloMet_et =
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)",
236  35, -3.5, 3.5);
237 
238  //
239  // bei->setCurrentFolder("Physics/Exotica/MultiJetsTrigger");
240 
241  //--- LongLived
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);
247 
248  //
249  // bei->setCurrentFolder("Physics/Exotica/LongLivedTrigger");
250 
251  //
252  bei->setCurrentFolder("Physics/Exotica/EIComparison");
253  ei_pfjet1_pt =
254  bei->book1D("ei_pfjet1_pt", "Pt of PFJet-1 (EI) (GeV)", 40, 0.0, 1000);
255  ei_pfmet_pt =
256  bei->book1D("ei_pfmet_pt", "Pt of PFMET (EI) (GeV)", 40, 0.0, 1000);
257  // ei_pfmuon_pt = bei->book1D("ei_pfmuon_pt", "Pt of PFMuon (EI)
258  // (GeV)", 40, 0.0 , 1000);
259  // ei_pfelectron_pt = bei->book1D("ei_pfelectron_pt", "Pt of PFElectron (EI)
260  // (GeV)", 40, 0.0 , 1000);
261 
262  bei->cd();
263 }
264 
265 //
266 // -- Analyze
267 //
269  const edm::EventSetup& iSetup) {
270 
271  // Calo objects
272  // Electrons
273  bool ValidCaloElectron =
274  iEvent.getByToken(ElectronToken_, ElectronCollection_);
275  if (!ValidCaloElectron) return;
276  // Muons
277  bool ValidCaloMuon = iEvent.getByToken(MuonToken_, MuonCollection_);
278  if (!ValidCaloMuon) return;
279  // Photons
280  bool ValidCaloPhoton = iEvent.getByToken(PhotonToken_, PhotonCollection_);
281  if (!ValidCaloPhoton) return;
282  // Jets
283  bool ValidCaloJet = iEvent.getByToken(CaloJetToken_, caloJetCollection_);
284  if (!ValidCaloJet) return;
285  calojets = *caloJetCollection_;
286  // MET
287  bool ValidCaloMET = iEvent.getByToken(CaloMETToken_, caloMETCollection_);
288  if (!ValidCaloMET) return;
289 
290  // PF objects
291  // PFJets
292  bool ValidPFJet = iEvent.getByToken(PFJetToken_, pfJetCollection_);
293  if (!ValidPFJet) return;
294  pfjets = *pfJetCollection_;
295  // PFMETs
296  bool ValidPFMET = iEvent.getByToken(PFMETToken_, pfMETCollection_);
297  if (!ValidPFMET) return;
298 
299  //#######################################################
300  // Jet Correction
301  // Define on-the-fly correction Jet
302  for (int i = 0; i < 2; i++) {
303  CaloJetPx[i] = 0.;
304  CaloJetPy[i] = 0.;
305  CaloJetPt[i] = 0.;
306  CaloJetEta[i] = 0.;
307  CaloJetPhi[i] = 0.;
308  CaloJetEMF[i] = 0.;
309  CaloJetfHPD[i] = 0.;
310  CaloJetn90[i] = 0.;
311  PFJetPx[i] = 0.;
312  PFJetPy[i] = 0.;
313  PFJetPt[i] = 0.;
314  PFJetEta[i] = 0.;
315  PFJetPhi[i] = 0.;
316  PFJetNHEF[i] = 0.;
317  PFJetCHEF[i] = 0.;
318  PFJetNEMF[i] = 0.;
319  PFJetCEMF[i] = 0.;
320  }
321 
322  //---------- CaloJet Correction (on-the-fly) ----------
323  const JetCorrector* calocorrector =
324  JetCorrector::getJetCorrector(CaloJetCorService_, iSetup);
325  CaloJetCollection::const_iterator calojet_ = calojets.begin();
326  for (; calojet_ != calojets.end(); ++calojet_) {
327  double scale = calocorrector->correction(*calojet_, iEvent, iSetup);
328  jetID->calculate(iEvent, *calojet_);
329 
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];
339  //
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();
358  } else {
359  }
360  }
361 
362  //
363  mj_monojet_countPFJet = 0;
364  const JetCorrector* pfcorrector =
365  JetCorrector::getJetCorrector(PFJetCorService_, iSetup);
366  PFJetCollection::const_iterator pfjet_ = pfjets.begin();
367  for (; pfjet_ != pfjets.end(); ++pfjet_) {
368  double scale = pfcorrector->correction(*pfjet_, iEvent, iSetup);
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];
379  //
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();
400  } else {
401  }
402  if (scale * pfjet_->pt() > mj_monojet_ptPFJet_) mj_monojet_countPFJet++;
403  }
404  //#######################################################
405 
406  // Analyze
407  //
408  analyzeMultiJets(iEvent);
409  // analyzeMultiJetsTrigger(iEvent);
410  //
411  analyzeLongLived(iEvent);
412  // analyzeLongLivedTrigger(iEvent);
413 
414  analyzeEventInterpretation(iEvent, iSetup);
415 }
416 
418 
419  //--- MonoJet
420  // bool checkLepton = false;
421  // reco::MuonCollection::const_iterator muon = MuonCollection_->begin();
422  // for(; muon != MuonCollection_->end(); muon++){
423  // if(muon->pt()<mj_monojet_ptPFMuon_) continue;
424  // checkLepton = true;
425  //}
426  // reco::GsfElectronCollection::const_iterator electron =
427  // ElectronCollection_->begin();
428  // for(; electron != ElectronCollection_->end(); electron++){
429  // if(electron->pt()<mj_monojet_ptPFElectron_) continue;
430  // checkLepton = true;
431  //}
432  // if(checkLepton==false){
433 
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);
442  }
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]));
449  }
450 
451  //--- MET
452  const CaloMETCollection* calometcol = caloMETCollection_.product();
453  const CaloMET met = calometcol->front();
454  mj_caloMet_et->Fill(met.et());
455  mj_caloMet_phi->Fill(met.phi());
456 
457  //
458  const PFMETCollection* pfmetcol = pfMETCollection_.product();
459  const PFMET pfmet = pfmetcol->front();
460  mj_pfMet_et->Fill(pfmet.et());
461  mj_pfMet_phi->Fill(pfmet.phi());
462 }
463 
465 
467  // SMajMajPho, SMinMinPho
468  // get ECAL reco hits
469  Handle<EBRecHitCollection> ecalhitseb;
470  const EBRecHitCollection* rhitseb = 0;
471  iEvent.getByToken(ecalBarrelRecHitToken_, ecalhitseb);
472  rhitseb = ecalhitseb.product(); // get a ptr to the product
473  //
474  Handle<EERecHitCollection> ecalhitsee;
475  const EERecHitCollection* rhitsee = 0;
476  iEvent.getByToken(ecalEndcapRecHitToken_, ecalhitsee);
477  rhitsee = ecalhitsee.product(); // get a ptr to the product
478  //
479  int nPhot = 0;
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;
484 
485  const Ptr<CaloCluster> theSeed = photon->superCluster()->seed();
486  const EcalRecHitCollection* rechits = (photon->isEB()) ? rhitseb : rhitsee;
487  CaloClusterPtr SCseed = photon->superCluster()->seed();
488 
489  std::pair<DetId, float> maxRH =
490  EcalClusterTools::getMaximum(*theSeed, &(*rechits));
491 
492  if (maxRH.second) {
493  Cluster2ndMoments moments =
494  EcalClusterTools::cluster2ndMoments(*SCseed, *rechits);
495  // std::vector<float> etaphimoments =
496  // EcalClusterTools::localCovariances(*SCseed, &(*rechits), &(*topology));
497  ll_gammajet_sMajMajPhot->Fill(moments.sMaj);
498  ll_gammajet_sMinMinPhot->Fill(moments.sMin);
499  } else {
500  ll_gammajet_sMajMajPhot->Fill(-100.);
501  ll_gammajet_sMinMinPhot->Fill(-100.);
502  }
503  ++nPhot;
504  }
505 }
506 
508 
510  const edm::EventSetup& iSetup) {
511 
512  // EI
513  // PFElectrons
514  bool ValidPFElectronEI =
515  iEvent.getByToken(PFElectronTokenEI_, pfElectronCollectionEI_);
516  if (!ValidPFElectronEI) return;
517  pfelectronsEI = *pfElectronCollectionEI_;
518 
519  // PFMuons
520  bool ValidPFMuonEI = iEvent.getByToken(PFMuonTokenEI_, pfMuonCollectionEI_);
521  if (!ValidPFMuonEI) return;
522  pfmuonsEI = *pfMuonCollectionEI_;
523 
524  // PFJets
525  bool ValidPFJetEI = iEvent.getByToken(PFJetTokenEI_, pfJetCollectionEI_);
526  if (!ValidPFJetEI) return;
527  pfjetsEI = *pfJetCollectionEI_;
528 
529  // PFMETs
530  bool ValidPFMETEI = iEvent.getByToken(PFMETTokenEI_, pfMETCollectionEI_);
531  if (!ValidPFMETEI) return;
532 
533  // Jet Correction
534  int countJet = 0;
535  PFJetEIPt = -99.;
536  const JetCorrector* pfcorrectorEI =
537  JetCorrector::getJetCorrector(PFJetCorService_, iSetup);
538  PFJetCollection::const_iterator pfjet_ = pfjetsEI.begin();
539  for (; pfjet_ != pfjetsEI.end(); ++pfjet_) {
540  double scale = pfcorrectorEI->correction(*pfjet_, iEvent, iSetup);
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();
551  countJet++;
552  }
553  if (countJet > 0) {
554  ei_pfjet1_pt->Fill(PFJetEIPt);
555  }
556 
557  const PFMETCollection* pfmetcolEI = pfMETCollectionEI_.product();
558  const PFMET pfmetEI = pfmetcolEI->front();
559  ei_pfmet_pt->Fill(pfmetEI.et());
560 }
561 
562 //
563 // -- End Luminosity Block
564 //
566  edm::EventSetup const& eSetup) {
567  // edm::LogInfo ("ExoticaDQM") <<"[ExoticaDQM]: End of LS transition,
568  // performing the DQM client operation";
569  nLumiSecs_++;
570  // edm::LogInfo("ExoticaDQM") << "============================================
571  // "
572  //<< endl << " ===> Iteration # " << nLumiSecs_ << " " <<
573  // lumiSeg.luminosityBlock()
574  //<< endl << "============================================ " << endl;
575 }
576 
577 //
578 // -- End Run
579 //
580 void ExoticaDQM::endRun(edm::Run const& run, edm::EventSetup const& eSetup) {}
581 
582 //
583 // -- End Job
584 //
586  // edm::LogInfo("ExoticaDQM") <<"[ExoticaDQM]: endjob called!";
587 }
588 
589 // Local Variables:
590 // show-trailing-whitespace: t
591 // truncate-lines: t
592 // End:
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
virtual double et() const GCC11_FINAL
transverse energy
int i
Definition: DBlmapReader.cc:9
virtual void analyzeLongLivedTrigger(edm::Event const &e)
Definition: ExoticaDQM.cc:507
virtual void beginLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
Definition: ExoticaDQM.cc:191
virtual void analyzeMultiJetsTrigger(edm::Event const &e)
Definition: ExoticaDQM.cc:464
ExoticaDQM(const edm::ParameterSet &ps)
Definition: ExoticaDQM.cc:86
virtual void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
Definition: ExoticaDQM.cc:565
virtual void analyzeEventInterpretation(edm::Event const &e, edm::EventSetup const &eSetup)
Definition: ExoticaDQM.cc:509
vector< string > vstring
Definition: ExoticaDQM.cc:75
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:446
double correction(const LorentzVector &fJet) const
get correction using Jet information only
Definition: JetCorrector.h:47
void bookHistos()
Definition: Histogram.h:33
const Double_t pi
Collection of Calo MET.
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
virtual float pt() const =0
transverse momentum
int iEvent
Definition: GenABIO.cc:230
virtual void beginJob()
Definition: ExoticaDQM.cc:162
void bookHistos(DQMStore *bei)
Definition: ExoticaDQM.cc:199
virtual void beginRun(edm::Run const &run, edm::EventSetup const &eSetup)
Definition: ExoticaDQM.cc:171
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
virtual void analyze(edm::Event const &e, edm::EventSetup const &eSetup)
Definition: ExoticaDQM.cc:268
T const * product() const
Definition: Handle.h:81
virtual ~ExoticaDQM()
Definition: ExoticaDQM.cc:154
static const JetCorrector * getJetCorrector(const std::string &fName, const edm::EventSetup &fSetup)
retrieve corrector from the event setup. troughs exception if something is missing ...
Definition: JetCorrector.cc:50
virtual void analyzeMultiJets(edm::Event const &e)
Definition: ExoticaDQM.cc:417
virtual void analyzeLongLived(edm::Event const &e)
Definition: ExoticaDQM.cc:466
bool operator()(const Candidate &c1, const Candidate &c2) const
Definition: ExoticaDQM.cc:78
virtual void endJob()
Definition: ExoticaDQM.cc:585
virtual void endRun(edm::Run const &run, edm::EventSetup const &eSetup)
Definition: ExoticaDQM.cc:580
std::vector< std::string > vstring
Definition: Schedule.cc:353
Definition: Run.h:41
Collection of PF MET.