CMS 3D CMS Logo

HiggsDQM.cc
Go to the documentation of this file.
2 
3 #include <memory>
4 
5 // Framework
14 
15 // Candidate handling
26 
29 
30 //#include
31 //"HiggsAnalysis/HiggsToZZ4Leptons/plugins/HZZ4LeptonsElectronAssociationMap.h"
32 //#include
33 //"HiggsAnalysis/HiggsToZZ4Leptons/plugins/HZZ4LeptonsMuonAssociationMap.h"
34 
35 // vertexing
36 // Transient tracks
44 
45 // Vertex utilities
47 
48 // Geometry
56 
62 
63 // RECO
64 // Isolation
65 //#include "HiggsAnalysis/HiggsToZZ4Leptons/plugins/CandidateHadIsolation.h"
66 //#include "HiggsAnalysis/HiggsToZZ4Leptons/plugins/CandidateTkIsolation.h"
74 
75 // MET
80 
82 #include "TLorentzVector.h"
83 
84 #include <iostream>
85 #include <iomanip>
86 #include <stdio.h>
87 #include <string>
88 #include <sstream>
89 #include <math.h>
90 
91 using namespace edm;
92 using namespace std;
93 using namespace reco;
94 
96  bool operator()(const Candidate& c1, const Candidate& c2) const {
97  return c1.pt() > c2.pt();
98  }
99 };
100 
102  const reco::Candidate& c2) {
103  return deltaR(c1, c2);
104 }
105 
107  const reco::Candidate& c2) {
108  return deltaPhi(c1.p4().phi(), c2.p4().phi());
109 }
110 
111 // This always returns only a positive deltaPhi
112 double HiggsDQM::calcDeltaPhi(double phi1, double phi2) {
113  double deltaPhi = phi1 - phi2;
114  if (deltaPhi < 0) deltaPhi = -deltaPhi;
115  if (deltaPhi > 3.1415926) {
116  deltaPhi = 2 * 3.1415926 - deltaPhi;
117  }
118  return deltaPhi;
119 }
120 
121 //
122 // -- Constructor
123 //
125  // cout<<"Entering HiggsDQM::HiggsDQM: "<<endl;
126 
127  edm::LogInfo("HZZ4LeptonsDQM") << " Creating HZZ4LeptonsDQM "
128  << "\n";
129 
130  typedef std::vector<edm::InputTag> vtag;
131  // Get parameters from configuration file
132  theElecTriggerPathToPass = ps.getParameter<string>("elecTriggerPathToPass");
133  theMuonTriggerPathToPass = ps.getParameter<string>("muonTriggerPathToPass");
134  theTriggerResultsCollectionTag_ =
135  ps.getParameter<InputTag>("triggerResultsCollection");
136  theCaloJetCollectionLabel_ = ps.getParameter<InputTag>("caloJetCollection");
137  theTriggerResultsCollection_ =
138  consumes<edm::TriggerResults>(theTriggerResultsCollectionTag_);
139  theMuonCollectionToken_ = consumes<reco::MuonCollection>(
140  ps.getParameter<InputTag>("muonCollection"));
141  theElectronCollectionToken_ = consumes<reco::GsfElectronCollection>(
142  ps.getParameter<InputTag>("electronCollection"));
143  theCaloJetCollectionToken_ =
144  consumes<reco::CaloJetCollection>(theCaloJetCollectionLabel_);
145  theCaloMETCollectionToken_ = consumes<reco::CaloMETCollection>(
146  ps.getParameter<InputTag>("caloMETCollection"));
147  thePfMETCollectionToken_ = consumes<reco::PFMETCollection>(
148  ps.getParameter<InputTag>("pfMETCollection"));
149  vertexToken_ =
150  consumes<reco::VertexCollection>(ps.getUntrackedParameter<InputTag>(
151  "vertexCollection", InputTag("offlinePrimaryVertices")));
152 
153  // cuts:
154  ptThrMu1_ = ps.getUntrackedParameter<double>("PtThrMu1");
155  ptThrMu2_ = ps.getUntrackedParameter<double>("PtThrMu2");
156 
157  nLumiSecs_ = 0;
158  nEvents_ = 0;
159  pi = 3.14159265;
160  // cout<<"...leaving HiggsDQM::HiggsDQM. "<<endl;
161 }
162 //
163 // -- Destructor
164 //
166  // cout<<"Entering HiggsDQM::~HiggsDQM: "<<endl;
167 
168  edm::LogInfo("HiggsDQM") << " Deleting HiggsDQM "
169  << "\n";
170 
171  // cout<<"...leaving HiggsDQM::~HiggsDQM. "<<endl;
172 }
173 
174 //
175 // -- Begin Luminosity Block
176 //
178  edm::EventSetup const& context) {
179  // cout<<"Entering HiggsDQM::beginLuminosityBlock: "<<endl;
180 
181  edm::LogInfo("HiggsDQM") << "[HiggsDQM]: Begin of LS transition";
182 
183  // cout<<"...leaving HiggsDQM::beginLuminosityBlock. "<<endl;
184 }
185 //
186 // -- Book histograms
187 //
189  edm::Run const &, edm::EventSetup const & ){
190  ibooker.setCurrentFolder("Physics/Higgs");
191 
192  h_vertex_number = ibooker.book1D("h_vertex_number",
193  "Number of event vertices in collection", 10, -0.5, 9.5);
194  h_vertex_chi2 = ibooker.book1D("h_vertex_chi2",
195  "Event Vertex #chi^{2}/n.d.o.f.", 100, 0.0, 2.0);
196  h_vertex_numTrks = ibooker.book1D("h_vertex_numTrks",
197  "Event Vertex, number of tracks", 100, -0.5, 99.5);
198  h_vertex_sumTrks = ibooker.book1D("h_vertex_sumTrks",
199  "Event Vertex, sum of track pt", 100, 0.0, 100.0);
200  h_vertex_d0 = ibooker.book1D("h_vertex_d0", "Event Vertex d0", 100, -10.0, 10.0);
201  h_jet_et = ibooker.book1D("h_jet_et",
202  "Jet with highest E_{T} (from " + theCaloJetCollectionLabel_.label() +
203  ");E_{T}(1^{st} jet) (GeV)", 20, 0., 200.0);
204  h_jet2_et = ibooker.book1D("h_jet2_et",
205  "Jet with 2^{nd} highest E_{T} (from " + theCaloJetCollectionLabel_.label() +
206  ");E_{T}(2^{nd} jet) (GeV)", 20, 0., 200.0);
207  h_jet_count = ibooker.book1D("h_jet_count",
208  "Number of " + theCaloJetCollectionLabel_.label() +
209  " (E_{T} > 15 GeV);Number of Jets", 8, -0.5, 7.5);
210  h_caloMet = ibooker.book1D("h_caloMet", "Calo Missing E_{T}; GeV", 20, 0.0, 100);
211  h_caloMet_phi = ibooker.book1D("h_caloMet_phi",
212  "Calo Missing E_{T} #phi;#phi(MET)", 35, -3.5, 3.5);
213  h_pfMet = ibooker.book1D("h_pfMet", "Pf Missing E_{T}; GeV", 20, 0.0, 100);
214  h_pfMet_phi = ibooker.book1D("h_pfMet_phi", "Pf Missing E_{T} #phi;#phi(MET)",
215  35, -3.5, 3.5);
216  h_eMultiplicity = ibooker.book1D("NElectrons",
217  "# of electrons per event", 10, 0., 10.);
218  h_mMultiplicity = ibooker.book1D("NMuons", "# of muons per event", 10, 0., 10.);
219  h_ePt = ibooker.book1D("ElePt", "Pt of electrons", 50, 0., 100.);
220  h_eEta = ibooker.book1D("EleEta", "Eta of electrons", 100, -5., 5.);
221  h_ePhi = ibooker.book1D("ElePhi", "Phi of electrons", 100, -3.5, 3.5);
222  h_mPt_GMTM = ibooker.book1D("MuonPt_GMTM",
223  "Pt of global+tracker muons", 50, 0., 100.);
224  h_mEta_GMTM = ibooker.book1D("MuonEta_GMTM",
225  "Eta of global+tracker muons", 60, -3., 3.);
226  h_mPhi_GMTM = ibooker.book1D("MuonPhi_GMTM",
227  "Phi of global+tracker muons", 70, -3.5, 3.5);
228  h_mPt_GMPT = ibooker.book1D("MuonPt_GMPT",
229  "Pt of global prompt-tight muons", 50, 0., 100.);
230  h_mEta_GMPT = ibooker.book1D("MuonEta_GMPT",
231  "Eta of global prompt-tight muons", 60, -3., 3.);
232  h_mPhi_GMPT = ibooker.book1D("MuonPhi_GMPT",
233  "Phi of global prompt-tight muons", 70, -3.5, 3.5);
234  h_mPt_GM = ibooker.book1D("MuonPt_GM", "Pt of global muons", 50, 0., 100.);
235  h_mEta_GM = ibooker.book1D("MuonEta_GM", "Eta of global muons", 60, -3., 3.);
236  h_mPhi_GM = ibooker.book1D("MuonPhi_GM", "Phi of global muons", 70, -3.5, 3.5);
237  h_mPt_TM = ibooker.book1D("MuonPt_TM", "Pt of tracker muons", 50, 0., 100.);
238  h_mEta_TM = ibooker.book1D("MuonEta_TM", "Eta of tracker muons", 60, -3., 3.);
239  h_mPhi_TM = ibooker.book1D("MuonPhi_TM", "Phi of tracker muons", 70, -3.5, 3.5);
240  h_mPt_STAM = ibooker.book1D("MuonPt_STAM", "Pt of STA muons", 50, 0., 100.);
241  h_mEta_STAM = ibooker.book1D("MuonEta_STAM", "Eta of STA muons", 60, -3., 3.);
242  h_mPhi_STAM = ibooker.book1D("MuonPhi_STAM", "Phi of STA muons", 70, -3.5, 3.5);
243  h_eCombIso = ibooker.book1D("EleCombIso", "CombIso of electrons", 100, 0., 10.);
244  h_mCombIso = ibooker.book1D("MuonCombIso", "CombIso of muons", 100, 0., 10.);
245  h_dimumass_GMGM = ibooker.book1D("DimuMass_GMGM", "Invariant mass of GMGM pairs",
246  100, 0., 200.);
247  h_dimumass_GMTM = ibooker.book1D("DimuMass_GMTM",
248  "Invariant mass of GMTM pairs", 100, 0., 200.);
249  h_dimumass_TMTM = ibooker.book1D("DimuMass_TMTM",
250  "Invariant mass of TMTM pairs", 100, 0., 200.);
251  h_dielemass = ibooker.book1D("DieleMass",
252  "Invariant mass of EE pairs", 100, 0., 200.);
253  h_lepcounts = ibooker.book1D("LeptonCounts",
254  "LeptonCounts for multi lepton events", 49, 0., 49.);
255 
256  ibooker.cd();
257 }
258 //
259 // -- Analyze
260 //
261 void HiggsDQM::analyze(const edm::Event& e, const edm::EventSetup& eSetup) {
262  // cout<<"[HiggsDQM::analyze()] "<<endl;
263 
264  //-------------------------------
265  //--- Trigger Info
266  //-------------------------------
267  // Did it pass certain HLT path?
268  bool passed_electron_HLT = true;
269  bool passed_muon_HLT = true;
270 
271  //-------------------------------
272  //--- Vertex Info
273  //-------------------------------
274  Handle<VertexCollection> vertexHandle;
275  e.getByToken(vertexToken_, vertexHandle);
276  if (vertexHandle.isValid()) {
277  VertexCollection vertexCollection = *(vertexHandle.product());
278  int vertex_number = vertexCollection.size();
279  VertexCollection::const_iterator v = vertexCollection.begin();
280  double vertex_chi2 = v->normalizedChi2(); // v->chi2();
281  double vertex_d0 = sqrt(v->x() * v->x() + v->y() * v->y());
282  // double vertex_ndof = v->ndof();cout << "ndof="<<vertex_ndof<<endl;
283  double vertex_numTrks = v->tracksSize();
284  double vertex_sumTrks = 0.0;
285  for (Vertex::trackRef_iterator vertex_curTrack = v->tracks_begin();
286  vertex_curTrack != v->tracks_end(); vertex_curTrack++) {
287  vertex_sumTrks += (*vertex_curTrack)->pt();
288  }
289  h_vertex_number->Fill(vertex_number);
290  h_vertex_chi2->Fill(vertex_chi2);
291  h_vertex_d0->Fill(vertex_d0);
292  h_vertex_numTrks->Fill(vertex_numTrks);
293  h_vertex_sumTrks->Fill(vertex_sumTrks);
294  }
295 
296  //-------------------------------
297  //--- Electrons
298  //-------------------------------
299  float nEle = 0;
301  e.getByToken(theElectronCollectionToken_, electronCollection);
302  if (electronCollection.isValid()) {
303  int posEle = 0, negEle = 0;
304  // If it passed electron HLT and the collection was found, find electrons
305  // near Z mass
306  if (passed_electron_HLT) {
307  for (reco::GsfElectronCollection::const_iterator recoElectron =
308  electronCollection->begin();
309  recoElectron != electronCollection->end(); recoElectron++) {
310  // cout << "Electron with pt= " << recoElectron->pt() << " and
311  // eta" << recoElectron->eta() << " p=" << recoElectron->p() << endl;
312  h_ePt->Fill(recoElectron->pt());
313  h_eEta->Fill(recoElectron->eta());
314  h_ePhi->Fill(recoElectron->phi());
315  if (recoElectron->charge() == 1) {
316  posEle++;
317  } else if (recoElectron->charge() == -1) {
318  negEle++;
319  }
320  // Require electron to pass some basic cuts
321  // if ( recoElectron->et() < 20 || fabs(recoElectron->eta())>2.5 )
322  // continue;
323  // Tighter electron cuts
324  // if ( recoElectron->deltaPhiSuperClusterTrackAtVtx() > 0.58 ||
325  // recoElectron->deltaEtaSuperClusterTrackAtVtx() > 0.01 ||
326  // recoElectron->sigmaIetaIeta() > 0.027 ) continue;
327  } // end of loop over electrons
328  } // end if passed HLT
329  nEle = posEle + negEle;
330  if (nEle > 9.) nEle = 9.;
331  h_eMultiplicity->Fill(nEle);
332 
333  // Z->ee:
334  unsigned int eleCollectionSize = electronCollection->size();
335  for (unsigned int i = 0; i < eleCollectionSize; i++) {
336  const GsfElectron& ele = electronCollection->at(i);
337  double pt = ele.pt();
338  if (pt > ptThrMu1_) {
339  for (unsigned int j = i + 1; j < eleCollectionSize; j++) {
340  const GsfElectron& ele2 = electronCollection->at(j);
341  double pt2 = ele2.pt();
342  if (pt2 > ptThrMu2_) {
343  const math::XYZTLorentzVector ZRecoEE(
344  ele.px() + ele2.px(), ele.py() + ele2.py(),
345  ele.pz() + ele2.pz(), ele.p() + ele2.p());
346  h_dielemass->Fill(ZRecoEE.mass());
347  }
348  }
349  }
350  }
351  }
352 
353  //-------------------------------
354  //--- Muons
355  //-------------------------------
356  float nMu = 0;
358  e.getByToken(theMuonCollectionToken_, muonCollection);
359  if (muonCollection.isValid()) {
360  // Find the highest pt muons
361  int posMu = 0, negMu = 0;
362  TLorentzVector m1, m2;
363  if (passed_muon_HLT) {
364  for (reco::MuonCollection::const_iterator recoMuon =
365  muonCollection->begin();
366  recoMuon != muonCollection->end(); recoMuon++) {
367  // cout << "Muon with pt= " << muIter->pt() << " and eta" <<
368  // muIter->eta() << " p=" << muIter->p() << endl;
369  if (recoMuon->isGlobalMuon() && recoMuon->isTrackerMuon()) {
370  h_mPt_GMTM->Fill(recoMuon->pt());
371  h_mEta_GMTM->Fill(recoMuon->eta());
372  h_mPhi_GMTM->Fill(recoMuon->phi());
373  } else if (recoMuon->isGlobalMuon() &&
376  h_mPt_GMPT->Fill(recoMuon->pt());
377  h_mEta_GMPT->Fill(recoMuon->eta());
378  h_mPhi_GMPT->Fill(recoMuon->phi());
379  } else if (recoMuon->isGlobalMuon()) {
380  h_mPt_GM->Fill(recoMuon->pt());
381  h_mEta_GM->Fill(recoMuon->eta());
382  h_mPhi_GM->Fill(recoMuon->phi());
383  } else if (recoMuon->isTrackerMuon() &&
386  h_mPt_TM->Fill(recoMuon->pt());
387  h_mEta_TM->Fill(recoMuon->eta());
388  h_mPhi_TM->Fill(recoMuon->phi());
389  } else if (recoMuon->isStandAloneMuon()) {
390  h_mPt_STAM->Fill(recoMuon->pt());
391  h_mEta_STAM->Fill(recoMuon->eta());
392  h_mPhi_STAM->Fill(recoMuon->phi());
393  }
394  if (recoMuon->charge() == 1) {
395  posMu++;
396  } else if (recoMuon->charge() == -1) {
397  negMu++;
398  }
399  }
400  nMu = posMu + negMu;
401  if (nMu > 9.) nMu = 9.;
402  h_mMultiplicity->Fill(nMu);
403  }
404 
405  // Z->mumu:
406  unsigned int muonCollectionSize = muonCollection->size();
407  for (unsigned int i = 0; i < muonCollectionSize; i++) {
408  const Muon& mu = muonCollection->at(i);
409  // if (!mu.isGlobalMuon()) continue;
410  double pt = mu.pt();
411  if (pt > ptThrMu1_) {
412  for (unsigned int j = i + 1; j < muonCollectionSize; j++) {
413  const Muon& mu2 = muonCollection->at(j);
414  double pt2 = mu2.pt();
415  if (pt2 > ptThrMu2_) {
416  // Glb + Glb
417  if (mu.isGlobalMuon() && mu2.isGlobalMuon()) {
418  const math::XYZTLorentzVector ZRecoGMGM(
419  mu.px() + mu2.px(), mu.py() + mu2.py(), mu.pz() + mu2.pz(),
420  mu.p() + mu2.p());
421  h_dimumass_GMGM->Fill(ZRecoGMGM.mass());
422  }
423  // Glb + TM
424  else if (mu.isGlobalMuon() && mu2.isTrackerMuon()) {
425  const math::XYZTLorentzVector ZRecoGMTM(
426  mu.px() + mu2.px(), mu.py() + mu2.py(), mu.pz() + mu2.pz(),
427  mu.p() + mu2.p());
428  h_dimumass_GMTM->Fill(ZRecoGMTM.mass());
429  }
430  // TM + TM
431  else if (mu.isTrackerMuon() && mu2.isTrackerMuon()) {
432  const math::XYZTLorentzVector ZRecoTMTM(
433  mu.px() + mu2.px(), mu.py() + mu2.py(), mu.pz() + mu2.pz(),
434  mu.p() + mu2.p());
435  h_dimumass_TMTM->Fill(ZRecoTMTM.mass());
436  }
437  }
438  }
439  }
440  }
441  }
442 
443  //-------------------------------
444  //--- Jets
445  //-------------------------------
446  Handle<CaloJetCollection> caloJetCollection;
447  e.getByToken(theCaloJetCollectionToken_, caloJetCollection);
448  if (caloJetCollection.isValid()) {
449  float jet_et = -8.0;
450  // float jet_eta = -8.0; // UNUSED
451  // float jet_phi = -8.0; // UNUSED
452  int jet_count = 0;
453  float jet2_et = -9.0;
454  // float jet2_eta = -9.0; // UNUSED
455  // float jet2_phi = -9.0; // UNUSED
456  for (CaloJetCollection::const_iterator i_calojet =
457  caloJetCollection->begin();
458  i_calojet != caloJetCollection->end(); i_calojet++) {
459  float jet_current_et = i_calojet->et();
460  // if it overlaps with electron, it is not a jet
461  // if ( electron_et>0.0 && fabs(i_calojet->eta()-electron_eta ) < 0.2 &&
462  // calcDeltaPhi(i_calojet->phi(), electron_phi ) < 0.2) continue;
463  // if ( electron2_et>0.0&& fabs(i_calojet->eta()-electron2_eta) < 0.2 &&
464  // calcDeltaPhi(i_calojet->phi(), electron2_phi) < 0.2) continue;
465  // if it has too low Et, throw away
466  if (jet_current_et < 15) continue;
467  jet_count++;
468  if (jet_current_et > jet_et) {
469  jet2_et = jet_et; // 2nd highest jet get's et from current highest
470  // jet2_eta = jet_eta; // UNUSED
471  // jet2_phi = jet_phi; // UNUSED
472  jet_et = i_calojet->et(); // current highest jet gets et from the new
473  // highest
474  // jet_eta = i_calojet->eta(); // UNUSED
475  // jet_phi = i_calojet->phi(); // UNUSED
476  } else if (jet_current_et > jet2_et) {
477  jet2_et = i_calojet->et();
478  // jet2_eta = i_calojet->eta(); // UNUSED
479  // jet2_phi = i_calojet->phi(); // UNUSED
480  }
481  }
482  if (jet_et > 0.0) {
483  h_jet_et->Fill(jet_et);
484  h_jet_count->Fill(jet_count);
485  }
486  }
487 
488  //-------------------------------
489  //--- MET
490  //-------------------------------
491  Handle<CaloMETCollection> caloMETCollection;
492  e.getByToken(theCaloMETCollectionToken_, caloMETCollection);
493  if (caloMETCollection.isValid()) {
494  float caloMet = caloMETCollection->begin()->et();
495  float caloMet_phi = caloMETCollection->begin()->phi();
496  h_caloMet->Fill(caloMet);
497  h_caloMet_phi->Fill(caloMet_phi);
498  }
499  Handle<PFMETCollection> pfMETCollection;
500  e.getByToken(thePfMETCollectionToken_, pfMETCollection);
501  if (pfMETCollection.isValid()) {
502  float pfMet = pfMETCollection->begin()->et();
503  float pfMet_phi = pfMETCollection->begin()->phi();
504  h_pfMet->Fill(pfMet);
505  h_pfMet_phi->Fill(pfMet_phi);
506  }
507 
508  //-------------------------------------
509  //--- Events with more than 2 leptons:
510  //-------------------------------------
511  if (nMu + nEle > 2 && nMu + nEle < 10) {
512  if (nMu == 0 && nEle == 3) h_lepcounts->Fill(0);
513  if (nMu == 0 && nEle == 4) h_lepcounts->Fill(1);
514  if (nMu == 0 && nEle == 5) h_lepcounts->Fill(2);
515  if (nMu == 0 && nEle == 6) h_lepcounts->Fill(3);
516  if (nMu == 0 && nEle == 7) h_lepcounts->Fill(4);
517  if (nMu == 0 && nEle == 8) h_lepcounts->Fill(5);
518  if (nMu == 0 && nEle == 9) h_lepcounts->Fill(6);
519  if (nMu == 1 && nEle == 2) h_lepcounts->Fill(7);
520  if (nMu == 1 && nEle == 3) h_lepcounts->Fill(8);
521  if (nMu == 1 && nEle == 4) h_lepcounts->Fill(9);
522  if (nMu == 1 && nEle == 5) h_lepcounts->Fill(10);
523  if (nMu == 1 && nEle == 6) h_lepcounts->Fill(11);
524  if (nMu == 1 && nEle == 7) h_lepcounts->Fill(12);
525  if (nMu == 1 && nEle == 8) h_lepcounts->Fill(13);
526  if (nMu == 2 && nEle == 1) h_lepcounts->Fill(14);
527  if (nMu == 2 && nEle == 2) h_lepcounts->Fill(15);
528  if (nMu == 2 && nEle == 3) h_lepcounts->Fill(16);
529  if (nMu == 2 && nEle == 4) h_lepcounts->Fill(17);
530  if (nMu == 2 && nEle == 5) h_lepcounts->Fill(18);
531  if (nMu == 2 && nEle == 6) h_lepcounts->Fill(19);
532  if (nMu == 2 && nEle == 7) h_lepcounts->Fill(20);
533  if (nMu == 3 && nEle == 0) h_lepcounts->Fill(21);
534  if (nMu == 3 && nEle == 1) h_lepcounts->Fill(22);
535  if (nMu == 3 && nEle == 2) h_lepcounts->Fill(23);
536  if (nMu == 3 && nEle == 3) h_lepcounts->Fill(24);
537  if (nMu == 3 && nEle == 4) h_lepcounts->Fill(25);
538  if (nMu == 3 && nEle == 5) h_lepcounts->Fill(26);
539  if (nMu == 3 && nEle == 6) h_lepcounts->Fill(27);
540  if (nMu == 4 && nEle == 0) h_lepcounts->Fill(28);
541  if (nMu == 4 && nEle == 1) h_lepcounts->Fill(29);
542  if (nMu == 4 && nEle == 2) h_lepcounts->Fill(30);
543  if (nMu == 4 && nEle == 3) h_lepcounts->Fill(31);
544  if (nMu == 4 && nEle == 4) h_lepcounts->Fill(32);
545  if (nMu == 4 && nEle == 5) h_lepcounts->Fill(33);
546  if (nMu == 5 && nEle == 0) h_lepcounts->Fill(34);
547  if (nMu == 5 && nEle == 1) h_lepcounts->Fill(35);
548  if (nMu == 5 && nEle == 2) h_lepcounts->Fill(36);
549  if (nMu == 5 && nEle == 3) h_lepcounts->Fill(37);
550  if (nMu == 5 && nEle == 4) h_lepcounts->Fill(38);
551  if (nMu == 6 && nEle == 0) h_lepcounts->Fill(39);
552  if (nMu == 6 && nEle == 1) h_lepcounts->Fill(40);
553  if (nMu == 6 && nEle == 2) h_lepcounts->Fill(41);
554  if (nMu == 6 && nEle == 3) h_lepcounts->Fill(42);
555  if (nMu == 7 && nEle == 0) h_lepcounts->Fill(43);
556  if (nMu == 7 && nEle == 1) h_lepcounts->Fill(44);
557  if (nMu == 7 && nEle == 2) h_lepcounts->Fill(45);
558  if (nMu == 8 && nEle == 0) h_lepcounts->Fill(46);
559  if (nMu == 8 && nEle == 1) h_lepcounts->Fill(47);
560  if (nMu == 9 && nEle == 0) h_lepcounts->Fill(48);
561  }
562  if ((nMu + nEle) >= 10)
563  LogDebug("HiggsDQM") << "WARNING: " << nMu + nEle
564  << " leptons in this event: run=" << e.id().run()
565  << ", event=" << e.id().event() << "\n";
566 }
567 //
568 // -- End Luminosity Block
569 //
571  edm::EventSetup const& eSetup) {
572  // cout<<"Entering HiggsDQM::endLuminosityBlock: "<<endl;
573 
574  edm::LogInfo("HiggsDQM") << "[HiggsDQM]: End of LS transition, performing "
575  "the DQM client operation";
576 
577  nLumiSecs_++;
578  // cout << "nLumiSecs_: "<< nLumiSecs_ << endl;
579 
580  edm::LogInfo("HiggsDQM")
581  << "====================================================== " << endl
582  << " ===> Iteration # " << nLumiSecs_ << " " << lumiSeg.luminosityBlock()
583  << endl
584  << "====================================================== " << endl;
585 
586  // cout<<"...leaving HiggsDQM::endLuminosityBlock. "<<endl;
587 }
588 //
589 // -- End Run
590 //
591 void HiggsDQM::endRun(edm::Run const& run, edm::EventSetup const& eSetup) {
592  // cout<<"Entering HiggsDQM::endRun: "<<endl;
593 
594  // edm::LogVerbatim ("HiggsDQM") <<"[HiggsDQM]: End of Run, saving DQM output
595  // ";
596  // int iRun = run.run();
597 
598  // cout<<"...leaving HiggsDQM::endRun. "<<endl;
599 }
600 
601 // Local Variables:
602 // show-trailing-whitespace: t
603 // truncate-lines: t
604 // End:
#define LogDebug(id)
RunNumber_t run() const
Definition: EventID.h:39
T getParameter(std::string const &) const
virtual double pt() const final
transverse momentum
EventNumber_t event() const
Definition: EventID.h:41
T getUntrackedParameter(std::string const &, T const &) const
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c) override
Definition: HiggsDQM.cc:570
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:457
void cd(void)
Definition: DQMStore.cc:269
bool isTrackerMuon() const
Definition: Muon.h:226
bool isGlobalMuon() const
Definition: Muon.h:225
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
const Double_t pi
LuminosityBlockNumber_t luminosityBlock() const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
Definition: Muon.py:1
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
virtual double px() const final
x coordinate of momentum vector
T sqrt(T t)
Definition: SSEVec.h:18
pfMet
____________________________________________________________________________||
Definition: PFMET_cfi.py:4
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
virtual double p() const final
magnitude of momentum vector
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
const int mu
Definition: Constants.h:22
double Distance(const reco::Candidate &c1, const reco::Candidate &c2)
Definition: HiggsDQM.cc:101
bool isValid() const
Definition: HandleBase.h:74
caloMet
____________________________________________________________________________||
Definition: CaloMET_cfi.py:4
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
Definition: HiggsDQM.cc:261
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
virtual double pz() const final
z coordinate of momentum vector
double calcDeltaPhi(double phi1, double phi2)
Definition: HiggsDQM.cc:112
double DistancePhi(const reco::Candidate &c1, const reco::Candidate &c2)
Definition: HiggsDQM.cc:106
void endRun(edm::Run const &run, edm::EventSetup const &eSetup) override
Definition: HiggsDQM.cc:591
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
T const * product() const
Definition: Handle.h:81
virtual double pt() const =0
transverse momentum
void beginLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context) override
Definition: HiggsDQM.cc:177
edm::EventID id() const
Definition: EventBase.h:58
fixed size matrix
HLT enums.
HiggsDQM(const edm::ParameterSet &ps)
Definition: HiggsDQM.cc:124
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
Definition: Vertex.h:37
virtual ~HiggsDQM()
Definition: HiggsDQM.cc:165
bool operator()(const Candidate &c1, const Candidate &c2) const
Definition: HiggsDQM.cc:96
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: HiggsDQM.cc:188
virtual double py() const final
y coordinate of momentum vector
Definition: Run.h:42