82 #include "TLorentzVector.h" 97 return c1.
pt() > c2.
pt();
114 if (deltaPhi < 0) deltaPhi = -
deltaPhi;
115 if (deltaPhi > 3.1415926) {
116 deltaPhi = 2 * 3.1415926 -
deltaPhi;
127 edm::LogInfo(
"HZZ4LeptonsDQM") <<
" Creating HZZ4LeptonsDQM " 130 typedef std::vector<edm::InputTag> vtag;
132 theElecTriggerPathToPass = ps.
getParameter<
string>(
"elecTriggerPathToPass");
133 theMuonTriggerPathToPass = ps.
getParameter<
string>(
"muonTriggerPathToPass");
134 theTriggerResultsCollectionTag_ =
137 theTriggerResultsCollection_ =
138 consumes<edm::TriggerResults>(theTriggerResultsCollectionTag_);
139 theMuonCollectionToken_ = consumes<reco::MuonCollection>(
141 theElectronCollectionToken_ = consumes<reco::GsfElectronCollection>(
143 theCaloJetCollectionToken_ =
144 consumes<reco::CaloJetCollection>(theCaloJetCollectionLabel_);
145 theCaloMETCollectionToken_ = consumes<reco::CaloMETCollection>(
147 thePfMETCollectionToken_ = consumes<reco::PFMETCollection>(
151 "vertexCollection",
InputTag(
"offlinePrimaryVertices")));
181 h_vertex_number = ibooker.
book1D(
"h_vertex_number",
182 "Number of event vertices in collection", 10, -0.5, 9.5);
183 h_vertex_chi2 = ibooker.
book1D(
"h_vertex_chi2",
184 "Event Vertex #chi^{2}/n.d.o.f.", 100, 0.0, 2.0);
185 h_vertex_numTrks = ibooker.
book1D(
"h_vertex_numTrks",
186 "Event Vertex, number of tracks", 100, -0.5, 99.5);
187 h_vertex_sumTrks = ibooker.
book1D(
"h_vertex_sumTrks",
188 "Event Vertex, sum of track pt", 100, 0.0, 100.0);
189 h_vertex_d0 = ibooker.
book1D(
"h_vertex_d0",
"Event Vertex d0", 100, -10.0, 10.0);
190 h_jet_et = ibooker.
book1D(
"h_jet_et",
191 "Jet with highest E_{T} (from " + theCaloJetCollectionLabel_.label() +
192 ");E_{T}(1^{st} jet) (GeV)", 20, 0., 200.0);
193 h_jet2_et = ibooker.
book1D(
"h_jet2_et",
194 "Jet with 2^{nd} highest E_{T} (from " + theCaloJetCollectionLabel_.label() +
195 ");E_{T}(2^{nd} jet) (GeV)", 20, 0., 200.0);
196 h_jet_count = ibooker.
book1D(
"h_jet_count",
197 "Number of " + theCaloJetCollectionLabel_.label() +
198 " (E_{T} > 15 GeV);Number of Jets", 8, -0.5, 7.5);
199 h_caloMet = ibooker.
book1D(
"h_caloMet",
"Calo Missing E_{T}; GeV", 20, 0.0, 100);
200 h_caloMet_phi = ibooker.
book1D(
"h_caloMet_phi",
201 "Calo Missing E_{T} #phi;#phi(MET)", 35, -3.5, 3.5);
202 h_pfMet = ibooker.
book1D(
"h_pfMet",
"Pf Missing E_{T}; GeV", 20, 0.0, 100);
203 h_pfMet_phi = ibooker.
book1D(
"h_pfMet_phi",
"Pf Missing E_{T} #phi;#phi(MET)",
205 h_eMultiplicity = ibooker.
book1D(
"NElectrons",
206 "# of electrons per event", 10, 0., 10.);
207 h_mMultiplicity = ibooker.
book1D(
"NMuons",
"# of muons per event", 10, 0., 10.);
208 h_ePt = ibooker.
book1D(
"ElePt",
"Pt of electrons", 50, 0., 100.);
209 h_eEta = ibooker.
book1D(
"EleEta",
"Eta of electrons", 100, -5., 5.);
210 h_ePhi = ibooker.
book1D(
"ElePhi",
"Phi of electrons", 100, -3.5, 3.5);
211 h_mPt_GMTM = ibooker.
book1D(
"MuonPt_GMTM",
212 "Pt of global+tracker muons", 50, 0., 100.);
213 h_mEta_GMTM = ibooker.
book1D(
"MuonEta_GMTM",
214 "Eta of global+tracker muons", 60, -3., 3.);
215 h_mPhi_GMTM = ibooker.
book1D(
"MuonPhi_GMTM",
216 "Phi of global+tracker muons", 70, -3.5, 3.5);
217 h_mPt_GMPT = ibooker.
book1D(
"MuonPt_GMPT",
218 "Pt of global prompt-tight muons", 50, 0., 100.);
219 h_mEta_GMPT = ibooker.
book1D(
"MuonEta_GMPT",
220 "Eta of global prompt-tight muons", 60, -3., 3.);
221 h_mPhi_GMPT = ibooker.
book1D(
"MuonPhi_GMPT",
222 "Phi of global prompt-tight muons", 70, -3.5, 3.5);
223 h_mPt_GM = ibooker.
book1D(
"MuonPt_GM",
"Pt of global muons", 50, 0., 100.);
224 h_mEta_GM = ibooker.
book1D(
"MuonEta_GM",
"Eta of global muons", 60, -3., 3.);
225 h_mPhi_GM = ibooker.
book1D(
"MuonPhi_GM",
"Phi of global muons", 70, -3.5, 3.5);
226 h_mPt_TM = ibooker.
book1D(
"MuonPt_TM",
"Pt of tracker muons", 50, 0., 100.);
227 h_mEta_TM = ibooker.
book1D(
"MuonEta_TM",
"Eta of tracker muons", 60, -3., 3.);
228 h_mPhi_TM = ibooker.
book1D(
"MuonPhi_TM",
"Phi of tracker muons", 70, -3.5, 3.5);
229 h_mPt_STAM = ibooker.
book1D(
"MuonPt_STAM",
"Pt of STA muons", 50, 0., 100.);
230 h_mEta_STAM = ibooker.
book1D(
"MuonEta_STAM",
"Eta of STA muons", 60, -3., 3.);
231 h_mPhi_STAM = ibooker.
book1D(
"MuonPhi_STAM",
"Phi of STA muons", 70, -3.5, 3.5);
232 h_eCombIso = ibooker.
book1D(
"EleCombIso",
"CombIso of electrons", 100, 0., 10.);
233 h_mCombIso = ibooker.
book1D(
"MuonCombIso",
"CombIso of muons", 100, 0., 10.);
234 h_dimumass_GMGM = ibooker.
book1D(
"DimuMass_GMGM",
"Invariant mass of GMGM pairs",
236 h_dimumass_GMTM = ibooker.
book1D(
"DimuMass_GMTM",
237 "Invariant mass of GMTM pairs", 100, 0., 200.);
238 h_dimumass_TMTM = ibooker.
book1D(
"DimuMass_TMTM",
239 "Invariant mass of TMTM pairs", 100, 0., 200.);
240 h_dielemass = ibooker.
book1D(
"DieleMass",
241 "Invariant mass of EE pairs", 100, 0., 200.);
242 h_lepcounts = ibooker.
book1D(
"LeptonCounts",
243 "LeptonCounts for multi lepton events", 49, 0., 49.);
257 bool passed_electron_HLT =
true;
258 bool passed_muon_HLT =
true;
267 int vertex_number = vertexCollection.size();
268 VertexCollection::const_iterator
v = vertexCollection.begin();
269 double vertex_chi2 = v->normalizedChi2();
270 double vertex_d0 =
sqrt(v->x() * v->x() + v->y() * v->y());
272 double vertex_numTrks = v->tracksSize();
273 double vertex_sumTrks = 0.0;
275 vertex_curTrack != v->tracks_end(); vertex_curTrack++) {
276 vertex_sumTrks += (*vertex_curTrack)->pt();
278 h_vertex_number->Fill(vertex_number);
279 h_vertex_chi2->Fill(vertex_chi2);
280 h_vertex_d0->Fill(vertex_d0);
281 h_vertex_numTrks->Fill(vertex_numTrks);
282 h_vertex_sumTrks->Fill(vertex_sumTrks);
290 e.
getByToken(theElectronCollectionToken_, electronCollection);
291 if (electronCollection.
isValid()) {
292 int posEle = 0, negEle = 0;
295 if (passed_electron_HLT) {
296 for (reco::GsfElectronCollection::const_iterator recoElectron =
297 electronCollection->begin();
298 recoElectron != electronCollection->end(); recoElectron++) {
301 h_ePt->Fill(recoElectron->pt());
302 h_eEta->Fill(recoElectron->eta());
303 h_ePhi->Fill(recoElectron->phi());
304 if (recoElectron->charge() == 1) {
306 }
else if (recoElectron->charge() == -1) {
318 nEle = posEle + negEle;
319 if (nEle > 9.) nEle = 9.;
320 h_eMultiplicity->Fill(nEle);
323 unsigned int eleCollectionSize = electronCollection->size();
324 for (
unsigned int i = 0;
i < eleCollectionSize;
i++) {
326 double pt = ele.
pt();
327 if (pt > ptThrMu1_) {
328 for (
unsigned int j =
i + 1; j < eleCollectionSize; j++) {
329 const GsfElectron& ele2 = electronCollection->at(j);
330 double pt2 = ele2.
pt();
331 if (pt2 > ptThrMu2_) {
333 ele.
px() + ele2.
px(), ele.
py() + ele2.
py(),
334 ele.
pz() + ele2.
pz(), ele.
p() + ele2.
p());
335 h_dielemass->Fill(ZRecoEE.mass());
347 e.
getByToken(theMuonCollectionToken_, muonCollection);
348 if (muonCollection.
isValid()) {
350 int posMu = 0, negMu = 0;
351 TLorentzVector m1, m2;
352 if (passed_muon_HLT) {
353 for (reco::MuonCollection::const_iterator
recoMuon =
354 muonCollection->begin();
362 }
else if (
recoMuon->isGlobalMuon() &&
368 }
else if (
recoMuon->isGlobalMuon()) {
372 }
else if (
recoMuon->isTrackerMuon() &&
378 }
else if (
recoMuon->isStandAloneMuon()) {
385 }
else if (
recoMuon->charge() == -1) {
390 if (nMu > 9.) nMu = 9.;
391 h_mMultiplicity->Fill(nMu);
395 unsigned int muonCollectionSize = muonCollection->size();
396 for (
unsigned int i = 0;
i < muonCollectionSize;
i++) {
397 const Muon&
mu = muonCollection->at(
i);
400 if (pt > ptThrMu1_) {
401 for (
unsigned int j =
i + 1; j < muonCollectionSize; j++) {
402 const Muon& mu2 = muonCollection->at(j);
403 double pt2 = mu2.
pt();
404 if (pt2 > ptThrMu2_) {
408 mu.
px() + mu2.
px(), mu.
py() + mu2.
py(), mu.
pz() + mu2.
pz(),
410 h_dimumass_GMGM->Fill(ZRecoGMGM.mass());
415 mu.
px() + mu2.
px(), mu.
py() + mu2.
py(), mu.
pz() + mu2.
pz(),
417 h_dimumass_GMTM->Fill(ZRecoGMTM.mass());
422 mu.
px() + mu2.
px(), mu.
py() + mu2.
py(), mu.
pz() + mu2.
pz(),
424 h_dimumass_TMTM->Fill(ZRecoTMTM.mass());
436 e.
getByToken(theCaloJetCollectionToken_, caloJetCollection);
437 if (caloJetCollection.
isValid()) {
442 float jet2_et = -9.0;
445 for (CaloJetCollection::const_iterator i_calojet =
446 caloJetCollection->begin();
447 i_calojet != caloJetCollection->end(); i_calojet++) {
448 float jet_current_et = i_calojet->et();
455 if (jet_current_et < 15)
continue;
457 if (jet_current_et > jet_et) {
461 jet_et = i_calojet->et();
465 }
else if (jet_current_et > jet2_et) {
466 jet2_et = i_calojet->et();
472 h_jet_et->Fill(jet_et);
473 h_jet_count->Fill(jet_count);
481 e.
getByToken(theCaloMETCollectionToken_, caloMETCollection);
482 if (caloMETCollection.
isValid()) {
483 float caloMet = caloMETCollection->begin()->et();
484 float caloMet_phi = caloMETCollection->begin()->phi();
485 h_caloMet->Fill(caloMet);
486 h_caloMet_phi->Fill(caloMet_phi);
489 e.
getByToken(thePfMETCollectionToken_, pfMETCollection);
490 if (pfMETCollection.
isValid()) {
491 float pfMet = pfMETCollection->begin()->et();
492 float pfMet_phi = pfMETCollection->begin()->phi();
493 h_pfMet->Fill(pfMet);
494 h_pfMet_phi->Fill(pfMet_phi);
500 if (nMu + nEle > 2 && nMu + nEle < 10) {
501 if (nMu == 0 && nEle == 3) h_lepcounts->Fill(0);
502 if (nMu == 0 && nEle == 4) h_lepcounts->Fill(1);
503 if (nMu == 0 && nEle == 5) h_lepcounts->Fill(2);
504 if (nMu == 0 && nEle == 6) h_lepcounts->Fill(3);
505 if (nMu == 0 && nEle == 7) h_lepcounts->Fill(4);
506 if (nMu == 0 && nEle == 8) h_lepcounts->Fill(5);
507 if (nMu == 0 && nEle == 9) h_lepcounts->Fill(6);
508 if (nMu == 1 && nEle == 2) h_lepcounts->Fill(7);
509 if (nMu == 1 && nEle == 3) h_lepcounts->Fill(8);
510 if (nMu == 1 && nEle == 4) h_lepcounts->Fill(9);
511 if (nMu == 1 && nEle == 5) h_lepcounts->Fill(10);
512 if (nMu == 1 && nEle == 6) h_lepcounts->Fill(11);
513 if (nMu == 1 && nEle == 7) h_lepcounts->Fill(12);
514 if (nMu == 1 && nEle == 8) h_lepcounts->Fill(13);
515 if (nMu == 2 && nEle == 1) h_lepcounts->Fill(14);
516 if (nMu == 2 && nEle == 2) h_lepcounts->Fill(15);
517 if (nMu == 2 && nEle == 3) h_lepcounts->Fill(16);
518 if (nMu == 2 && nEle == 4) h_lepcounts->Fill(17);
519 if (nMu == 2 && nEle == 5) h_lepcounts->Fill(18);
520 if (nMu == 2 && nEle == 6) h_lepcounts->Fill(19);
521 if (nMu == 2 && nEle == 7) h_lepcounts->Fill(20);
522 if (nMu == 3 && nEle == 0) h_lepcounts->Fill(21);
523 if (nMu == 3 && nEle == 1) h_lepcounts->Fill(22);
524 if (nMu == 3 && nEle == 2) h_lepcounts->Fill(23);
525 if (nMu == 3 && nEle == 3) h_lepcounts->Fill(24);
526 if (nMu == 3 && nEle == 4) h_lepcounts->Fill(25);
527 if (nMu == 3 && nEle == 5) h_lepcounts->Fill(26);
528 if (nMu == 3 && nEle == 6) h_lepcounts->Fill(27);
529 if (nMu == 4 && nEle == 0) h_lepcounts->Fill(28);
530 if (nMu == 4 && nEle == 1) h_lepcounts->Fill(29);
531 if (nMu == 4 && nEle == 2) h_lepcounts->Fill(30);
532 if (nMu == 4 && nEle == 3) h_lepcounts->Fill(31);
533 if (nMu == 4 && nEle == 4) h_lepcounts->Fill(32);
534 if (nMu == 4 && nEle == 5) h_lepcounts->Fill(33);
535 if (nMu == 5 && nEle == 0) h_lepcounts->Fill(34);
536 if (nMu == 5 && nEle == 1) h_lepcounts->Fill(35);
537 if (nMu == 5 && nEle == 2) h_lepcounts->Fill(36);
538 if (nMu == 5 && nEle == 3) h_lepcounts->Fill(37);
539 if (nMu == 5 && nEle == 4) h_lepcounts->Fill(38);
540 if (nMu == 6 && nEle == 0) h_lepcounts->Fill(39);
541 if (nMu == 6 && nEle == 1) h_lepcounts->Fill(40);
542 if (nMu == 6 && nEle == 2) h_lepcounts->Fill(41);
543 if (nMu == 6 && nEle == 3) h_lepcounts->Fill(42);
544 if (nMu == 7 && nEle == 0) h_lepcounts->Fill(43);
545 if (nMu == 7 && nEle == 1) h_lepcounts->Fill(44);
546 if (nMu == 7 && nEle == 2) h_lepcounts->Fill(45);
547 if (nMu == 8 && nEle == 0) h_lepcounts->Fill(46);
548 if (nMu == 8 && nEle == 1) h_lepcounts->Fill(47);
549 if (nMu == 9 && nEle == 0) h_lepcounts->Fill(48);
551 if ((nMu + nEle) >= 10)
552 LogDebug(
"HiggsDQM") <<
"WARNING: " << nMu + nEle
553 <<
" leptons in this event: run=" << e.
id().
run()
554 <<
", event=" << e.
id().
event() <<
"\n";
563 edm::LogInfo(
"HiggsDQM") <<
"[HiggsDQM]: End of LS transition, performing " 564 "the DQM client operation";
570 <<
"====================================================== " << endl
571 <<
" ===> Iteration # " << nLumiSecs_ <<
" " << lumiSeg.
luminosityBlock()
573 <<
"====================================================== " << endl;
T getParameter(std::string const &) const
EventNumber_t event() const
T getUntrackedParameter(std::string const &, T const &) const
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c) override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
double px() const final
x coordinate of momentum vector
double pt() const final
transverse momentum
std::vector< Vertex > VertexCollection
collection of Vertex objects
bool isTrackerMuon() const override
LuminosityBlockNumber_t luminosityBlock() const
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
bool isGlobalMuon() const override
virtual const LorentzVector & p4() const =0
four-momentum Lorentz vector
double pz() const final
z coordinate of momentum vector
pfMet
____________________________________________________________________________||
MonitorElement * book1D(Args &&...args)
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
double Distance(const reco::Candidate &c1, const reco::Candidate &c2)
caloMet
____________________________________________________________________________||
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
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)
double calcDeltaPhi(double phi1, double phi2)
double p() const final
magnitude of momentum vector
double DistancePhi(const reco::Candidate &c1, const reco::Candidate &c2)
void endRun(edm::Run const &run, edm::EventSetup const &eSetup) override
void setCurrentFolder(const std::string &fullpath)
T const * product() const
virtual double pt() const =0
transverse momentum
double py() const final
y coordinate of momentum vector
HiggsDQM(const edm::ParameterSet &ps)
std::vector< TrackBaseRef >::const_iterator trackRef_iterator
The iteratator for the vector<TrackRef>
bool operator()(const Candidate &c1, const Candidate &c2) const
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override