CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EwkMuDQM.cc
Go to the documentation of this file.
2 
6 
9 
12 
16 
22 
24 
28 
30 
32 
33 using namespace edm;
34 using namespace std;
35 using namespace reco;
36 
38  // Input collections
39  metTag_ (cfg.getUntrackedParameter<edm::InputTag> ("METTag", edm::InputTag("pfmet"))),
40  jetTag_ (cfg.getUntrackedParameter<edm::InputTag> ("JetTag", edm::InputTag("ak5PFJets"))),
41  trigTag_ (consumes<edm::TriggerResults> (
42  cfg.getUntrackedParameter<edm::InputTag> ("TrigTag",
43  edm::InputTag("TriggerResults::HLT")))),
44  muonTag_ (consumes<edm::View<reco::Muon> > (
45  cfg.getUntrackedParameter<edm::InputTag> ("MuonTag",
46  edm::InputTag("muons")))),
47  metToken_ (consumes<edm::View<reco::MET> > (
48  cfg.getUntrackedParameter<edm::InputTag> ("METTag",
49  edm::InputTag("pfmet")))),
50  jetToken_ (consumes<edm::View<reco::Jet> > (
51  cfg.getUntrackedParameter<edm::InputTag> ("JetTag",
52  edm::InputTag("ak5PFJets")))),
53  phoTag_ (consumes<edm::View<reco::Photon> > (
54  cfg.getUntrackedParameter<edm::InputTag> ("phoTag",
55  edm::InputTag("photons")))),
56  vertexTag_ (consumes<edm::View<reco::Vertex> > (
57  cfg.getUntrackedParameter<edm::InputTag> ("VertexTag",
58  edm::InputTag("offlinePrimaryVertices")))),
59  beamSpotTag_ (consumes<reco::BeamSpot> (
60  cfg.getUntrackedParameter<edm::InputTag> ("beamSpotTag",
61  edm::InputTag("offlineBeamSpot")))),
62  trigPathNames_(cfg.getUntrackedParameter<std::vector <std::string> >("TrigPathNames")),
63 
64  // Muon quality cuts
65  isAlsoTrackerMuon_(cfg.getUntrackedParameter<bool>("IsAlsoTrackerMuon", true)), // Glb muon also tracker muon
66  dxyCut_ (cfg.getUntrackedParameter<double>("DxyCut", 0.2)), // dxy < 0.2 cm
67  normalizedChi2Cut_(cfg.getUntrackedParameter<double>("NormalizedChi2Cut", 10.)), // chi2/ndof (of global fit) <10.0
68  trackerHitsCut_ (cfg.getUntrackedParameter<int>("TrackerHitsCut", 11)), // Tracker Hits >10
69  pixelHitsCut_ (cfg.getUntrackedParameter<int>("PixelHitsCut", 1)), // Pixel Hits >0
70  muonHitsCut_ (cfg.getUntrackedParameter<int>("MuonHitsCut", 1)), // Valid Muon Hits >0
71  nMatchesCut_ (cfg.getUntrackedParameter<int>("NMatchesCut", 2)), // At least 2 Chambers with matches
72 
73  // W-boson cuts
74  isRelativeIso_(cfg.getUntrackedParameter<bool>("IsRelativeIso", true)),
75  isCombinedIso_(cfg.getUntrackedParameter<bool>("IsCombinedIso", false)),
76  isoCut03_ (cfg.getUntrackedParameter<double>("IsoCut03", 0.1)),
77  acopCut_ (cfg.getUntrackedParameter<double>("AcopCut", 999.)),
78  metMin_ (cfg.getUntrackedParameter<double>("MetMin", -999999.)),
79  metMax_ (cfg.getUntrackedParameter<double>("MetMax", 999999.)),
80  mtMin_ (cfg.getUntrackedParameter<double>("MtMin", 50.)),
81  mtMax_ (cfg.getUntrackedParameter<double>("MtMax", 200.)),
82  ptCut_ (cfg.getUntrackedParameter<double>("PtCut", 20.)),
83  etaCut_ (cfg.getUntrackedParameter<double>("EtaCut", 2.4)),
84 
85  // Z rejection
86  ptThrForZ1_ (cfg.getUntrackedParameter<double>("PtThrForZ1", 20.)),
87  ptThrForZ2_ (cfg.getUntrackedParameter<double>("PtThrForZ2", 10.)),
88 
89  // Z selection
90  dimuonMassMin_(cfg.getUntrackedParameter<double>("dimuonMassMin", 80.)),
91  dimuonMassMax_(cfg.getUntrackedParameter<double>("dimuonMassMax", 120.)),
92 
93  // Top rejection
94  eJetMin_ (cfg.getUntrackedParameter<double>("EJetMin", 999999.)),
95  nJetMax_ (cfg.getUntrackedParameter<int>("NJetMax", 999999)),
96 
97  // Photon cuts
98  ptThrForPhoton_(cfg.getUntrackedParameter<double>("ptThrForPhoton",5.)),
99  nPhoMax_(cfg.getUntrackedParameter<int>("nPhoMax", 999999))
100 {
101  isValidHltConfig_ = false;
102 
104  theDbe->setCurrentFolder("Physics/EwkMuDQM");
105  init_histograms();
106 
107 }
108 
109 void EwkMuDQM::beginRun(const Run& iRun, const EventSetup& iSet) {
110  nall = 0;
111  nsel = 0;
112  nz = 0;
113 
114  nrec = 0;
115  niso = 0;
116  nhlt = 0;
117  nmet = 0;
118 
119  // passed as parameter to HLTConfigProvider::init(), not yet used
120  bool isConfigChanged = false;
121  // isValidHltConfig_ used to short-circuit analyze() in case of problems
122  isValidHltConfig_ = hltConfigProvider_.init( iRun, iSet, "HLT", isConfigChanged );
123 
124 }
125 
127 
128 }
129 
131 
132  char chtitle[256] = "";
133 
134  pt_before_ = theDbe->book1D("PT_BEFORECUTS","Muon transverse momentum (global muon) [GeV]",100,0.,100.);
135  pt_after_ = theDbe->book1D("PT_AFTERWCUTS","Muon transverse momentum (global muon) [GeV]",100,0.,100.);
136 
137  eta_before_ = theDbe->book1D("ETA_BEFORECUTS","Muon pseudo-rapidity",50,-2.5,2.5);
138  eta_after_ = theDbe->book1D("ETA_AFTERWCUTS","Muon pseudo-rapidity",50,-2.5,2.5);
139 
140  dxy_before_ = theDbe->book1D("DXY_BEFORECUTS","Muon transverse distance to beam spot [cm]",100,-0.5,0.5);
141  dxy_after_ = theDbe->book1D("DXY_AFTERWCUTS","Muon transverse distance to beam spot [cm]",100,-0.5,0.5);
142 
143  goodewkmuon_before_ = theDbe->book1D("GOODEWKMUON_BEFORECUTS","Quality-muon flag",2,-0.5,1.5);
144  goodewkmuon_after_ = theDbe->book1D("GOODEWKMUON_AFTERWCUTS","Quality-muon flag",2,-0.5,1.5);
145 
146  if (isRelativeIso_) {
147  if (isCombinedIso_) {
148  iso_before_ = theDbe->book1D("ISO_BEFORECUTS","Relative (combined) isolation variable",100, 0., 1.);
149  iso_after_ = theDbe->book1D("ISO_AFTERWCUTS","Relative (combined) isolation variable",100, 0., 1.);
150  } else {
151  iso_before_ = theDbe->book1D("ISO_BEFORECUTS","Relative (tracker) isolation variable",100, 0., 1.);
152  iso_after_ = theDbe->book1D("ISO_AFTERWCUTS","Relative (tracker) isolation variable",100, 0., 1.);
153  }
154  } else {
155  if (isCombinedIso_) {
156  iso_before_ = theDbe->book1D("ISO_BEFORECUTS","Absolute (combined) isolation variable [GeV]",100, 0., 20.);
157  iso_after_ = theDbe->book1D("ISO_AFTERWCUTS","Absolute (combined) isolation variable [GeV]",100, 0., 20.);
158  } else {
159  iso_before_ = theDbe->book1D("ISO_BEFORECUTS","Absolute (tracker) isolation variable [GeV]",100, 0., 20.);
160  iso_after_ = theDbe->book1D("ISO_AFTERWCUTS","Absolute (tracker) isolation variable [GeV]",100, 0., 20.);
161  }
162  }
163 
164  trig_before_ = theDbe->book1D("TRIG_BEFORECUTS","Trigger response (boolean of muon triggers)",2,-0.5,1.5);
165  trig_after_ = theDbe->book1D("TRIG_AFTERWCUTS","Trigger response (boolean of muon triggers)",2,-0.5,1.5);
166 
167  snprintf(chtitle, 255, "Transverse mass (%s) [GeV]", metTag_.label().data());
168  mt_before_ = theDbe->book1D("MT_BEFORECUTS",chtitle,150,0.,300.);
169  mt_after_ = theDbe->book1D("MT_AFTERWCUTS",chtitle,150,0.,300.);
170 
171  snprintf(chtitle, 255, "Missing transverse energy (%s) [GeV]", metTag_.label().data());
172  met_before_ = theDbe->book1D("MET_BEFORECUTS",chtitle,100,0.,200.);
173  met_after_ = theDbe->book1D("MET_AFTERWCUTS",chtitle,100,0.,200.);
174  met_afterZ_ = theDbe->book1D("MET_AFTERZCUTS",chtitle,100,0.,200.);
175 
176  snprintf(chtitle, 255, "MU-MET (%s) acoplanarity", metTag_.label().data());
177  acop_before_ = theDbe->book1D("ACOP_BEFORECUTS",chtitle,50,0.,M_PI);
178  acop_after_ = theDbe->book1D("ACOP_AFTERWCUTS",chtitle,50,0.,M_PI);
179 
180  snprintf(chtitle, 255, "Z selection: muons above %.2f GeV", ptThrForZ1_);
181  n_zselPt1thr_ = theDbe->book1D("NZSELPT1THR",chtitle,10,-0.5,9.5);
182  snprintf(chtitle, 255, "Z selection: muons above %.2f GeV", ptThrForZ2_);
183  n_zselPt2thr_ = theDbe->book1D("NZSELPT2THR",chtitle,10,-0.5,9.5);
184 
185  snprintf(chtitle, 255, "Number of jets (%s) above %.2f GeV", jetTag_.label().data(), eJetMin_);
186  njets_before_ = theDbe->book1D("NJETS_BEFORECUTS",chtitle,16,-0.5,15.5);
187  njets_after_ = theDbe->book1D("NJETS_AFTERWCUTS",chtitle,16,-0.5,15.5);
188  njets_afterZ_ = theDbe->book1D("NJETS_AFTERZCUTS",chtitle,16,-0.5,15.5);
189 
190  leadingjet_pt_before_ = theDbe->book1D("LEADINGJET_PT_BEFORECUTS","Leading Jet transverse momentum",300,0.,300.);
191  leadingjet_pt_after_ = theDbe->book1D("LEADINGJET_PT_AFTERWCUTS","Leading Jet transverse momentum",300,0.,300.);
192  leadingjet_pt_afterZ_ = theDbe->book1D("LEADINGJET_PT_AFTERZCUTS","Leading Jet transverse momentum",300,0.,300.);
193 
194  leadingjet_eta_before_ = theDbe->book1D("LEADINGJET_ETA_BEFORECUTS","Leading Jet pseudo-rapidity",50,-2.5,2.5);
195  leadingjet_eta_after_ = theDbe->book1D("LEADINGJET_ETA_AFTERWCUTS","Leading Jet pseudo-rapidity",50,-2.5,2.5);
196  leadingjet_eta_afterZ_ = theDbe->book1D("LEADINGJET_ETA_AFTERZCUTS","Leading Jet pseudo-rapidity",50,-2.5,2.5);
197 
200  //ptPlus_before_ = theDbe->book1D("PTPLUS_BEFORE_CUTS","Muon+ transverse momentum before cuts [GeV]",100,0.,100.);
201  //ptMinus_before_ = theDbe->book1D("PTMINUS_BEFORE_CUTS","Muon- transverse momentum before cuts [GeV]",100,0.,100.);
202  //ptPlus_afterW_ = theDbe->book1D("PTPLUS_AFTERW_CUTS","Muon+ transverse momentum after W cuts [GeV]",100,0.,100.);
203  //ptMinus_afterW_ = theDbe->book1D("PTMINUS_AFTERW_CUTS","Muon- transverse momentum after W cuts [GeV]",100,0.,100.);
204  //ptPlus_afterZ_ = theDbe->book1D("PTPLUS_AFTERZ_CUTS","Muon+ transverse momentum after Z cuts [GeV]",100,0.,100.);
205  //ptMinus_afterZ_ = theDbe->book1D("PTMINUS_AFTERZ_CUTS","Muon- transverse momentum after Z cuts [GeV]",100,0.,100.);
206  ptDiffPM_before_ = theDbe->book1D("PTDIFFPM_BEFORE_CUTS","pt(Muon+)-pt(Muon-) after Z cuts [GeV]",200,-100.,100.);
207  ptDiffPM_afterZ_ = theDbe->book1D("PTDIFFPM_AFTERZ_CUTS","pt(Muon+)-pt(Muon-) after Z cuts [GeV]",200,-100.,100.);
208 
211  pt1_afterZ_ = theDbe->book1D("PT1_AFTERZCUTS","Muon transverse momentum (global muon) [GeV]",100,0.,100.);
212  eta1_afterZ_ = theDbe->book1D("ETA1_AFTERZCUTS","Muon pseudo-rapidity",50,-2.5,2.5);
213  dxy1_afterZ_ = theDbe->book1D("DXY1_AFTERZCUTS","Muon transverse distance to beam spot [cm]",100,-0.5,0.5);
214  goodewkmuon1_afterZ_ = theDbe->book1D("GOODEWKMUON1_AFTERZCUTS","Quality-muon flag",2,-0.5,1.5);
215 
216  if (isRelativeIso_) {
217  if (isCombinedIso_) {
218  iso1_afterZ_ = theDbe->book1D("ISO1_AFTERZCUTS","Relative (combined) isolation variable",100, 0., 1.);
219  iso2_afterZ_ = theDbe->book1D("ISO2_AFTERZCUTS","Relative (combined) isolation variable",100, 0., 1.);
220  } else {
221  iso1_afterZ_ = theDbe->book1D("ISO1_AFTERZCUTS","Relative (tracker) isolation variable",100, 0., 1.);
222  iso2_afterZ_ = theDbe->book1D("ISO2_AFTERZCUTS","Relative (tracker) isolation variable",100, 0., 1.);
223  }
224  } else {
225  if (isCombinedIso_) {
226  iso1_afterZ_ = theDbe->book1D("ISO1_AFTERZCUTS","Absolute (combined) isolation variable [GeV]",100, 0., 20.);
227  iso2_afterZ_ = theDbe->book1D("ISO2_AFTERZCUTS","Absolute (combined) isolation variable [GeV]",100, 0., 20.);
228  } else {
229  iso1_afterZ_ = theDbe->book1D("ISO1_AFTERZCUTS","Absolute (tracker) isolation variable [GeV]",100, 0., 20.);
230  iso2_afterZ_ = theDbe->book1D("ISO2_AFTERZCUTS","Absolute (tracker) isolation variable [GeV]",100, 0., 20.);
231  }
232  }
233 
234  pt2_afterZ_ = theDbe->book1D("PT2_AFTERZCUTS","Muon transverse momentum (global muon) [GeV]",100,0.,100.);
235  eta2_afterZ_ = theDbe->book1D("ETA2_AFTERZCUTS","Muon pseudo-rapidity",50,-2.5,2.5);
236  dxy2_afterZ_ = theDbe->book1D("DXY2_AFTERZCUTS","Muon transverse distance to beam spot [cm]",100,-0.5,0.5);
237  goodewkmuon2_afterZ_ = theDbe->book1D("GOODEWKMUON2_AFTERZCUTS","Quality-muon flag",2,-0.5,1.5);
238  ztrig_afterZ_ = theDbe->book1D("ZTRIG_AFTERZCUTS","Trigger response (boolean of muon triggers)",2,-0.5,1.5);
239  dimuonmass_before_= theDbe->book1D("DIMUONMASS_BEFORECUTS","DiMuonMass (2 globals)",100,0,200);
240  dimuonmass_afterZ_= theDbe->book1D("DIMUONMASS_AFTERZCUTS","DiMuonMass (2 globals)",100,0,200);
241  npvs_before_ = theDbe->book1D("NPVs_BEFORECUTS","Number of Valid Primary Vertices",51,-0.5,50.5);
242  npvs_after_ = theDbe->book1D("NPVs_AFTERWCUTS","Number of Valid Primary Vertices",51,-0.5,50.5);
243  npvs_afterZ_ = theDbe->book1D("NPVs_AFTERZCUTS","Number of Valid Primary Vertices",51,-0.5,50.5);
244  muoncharge_before_ = theDbe->book1D("MUONCHARGE_BEFORECUTS","Muon Charge",3,-1.5,1.5);
245  muoncharge_after_ = theDbe->book1D("MUONCHARGE_AFTERWCUTS","Muon Charge",3,-1.5,1.5);
246  muoncharge_afterZ_ = theDbe->book1D("MUONCHARGE_AFTERZCUTS","Muon Charge",3,-1.5,1.5);
247 
248  // Adding these to replace the NZ ones (more useful, since they are more general?)
249  nmuons_ = theDbe->book1D("NMuons","Number of muons in the event",10,-0.5,9.5);
250  ngoodmuons_ = theDbe->book1D("NGoodMuons","Number of muons passing the quality criteria",10,-0.5,9.5);
251 
252  nph_ = theDbe->book1D("nph","Number of photons in the event",20,0.,20.);
253  //npfph_ = theDbe->book1D("npfph","Number of PF photons in the event",20,0.,20.);
254  phPt_ = theDbe->book1D("phPt","Photon transverse momentum [GeV]",100,0.,1000.);
255  //pfphPt_ = theDbe->book1D("pfphPt","PF Photon transverse momentum [GeV]",1000,0.,1000.);
256  snprintf(chtitle, 255, "Photon pseudorapidity (pT>%4.1f)",ptThrForPhoton_);
257  phEta_ = theDbe->book1D("phEta",chtitle,100,-2.5,2.5);
258  //pfphEta_ = theDbe->book1D("pfphEta","PF Photon pseudorapidity",100,-2.5,2.5);
259 
260 }
261 
262 
264 }
265 
266 void EwkMuDQM::endRun(const Run& r, const EventSetup& iSet) {
267 
268 }
269 
270 void EwkMuDQM::analyze (const Event & ev, const EventSetup & iSet) {
271 
272  // Muon collection
273  Handle<View<Muon> > muonCollection;
274  if (!ev.getByToken(muonTag_, muonCollection)) {
275  //LogWarning("") << ">>> Muon collection does not exist !!!";
276  return;
277  }
278  unsigned int muonCollectionSize = muonCollection->size();
279 
280  // Beam spot
281  Handle<reco::BeamSpot> beamSpotHandle;
282  if (!ev.getByToken(beamSpotTag_, beamSpotHandle)) {
283  //LogWarning("") << ">>> No beam spot found !!!";
284  return;
285  }
286 
287 
288  // Loop to reject/control Z->mumu is done separately
289  unsigned int nmuonsForZ1 = 0;
290  unsigned int nmuonsForZ2 = 0;
291  bool cosmic = false;
292  for (unsigned int i=0; i<muonCollectionSize; i++) {
293  const Muon& mu = muonCollection->at(i);
294  if (!mu.isGlobalMuon()) continue;
295  double pt = mu.pt();
296  double dxy = mu.innerTrack()->dxy(beamSpotHandle->position());
297 
298  if (fabs(dxy)>1) { cosmic=true; break;}
299 
300  if (pt>ptThrForZ1_) nmuonsForZ1++;
301  if (pt>ptThrForZ2_) nmuonsForZ2++;
302 
303  for (unsigned int j=i+1; j<muonCollectionSize; j++) {
304  const Muon& mu2 = muonCollection->at(j);
305  if (mu2.isGlobalMuon() && (mu.charge()*mu2.charge()==-1) ){
306  const math::XYZTLorentzVector ZRecoGlb (mu.px()+mu2.px(), mu.py()+mu2.py() , mu.pz()+mu2.pz(), mu.p()+mu2.p());
307  dimuonmass_before_->Fill(ZRecoGlb.mass());
308  if (mu.charge()>0) {
309  ptDiffPM_before_->Fill(mu.pt()-mu2.pt());
310  }
311  else {
312  ptDiffPM_before_->Fill(mu2.pt()-mu.pt());
313  }
314  }
315  }
316  }
317  if(cosmic) return;
318 
319  LogTrace("") << "> Z rejection: muons above " << ptThrForZ1_ << " [GeV]: " << nmuonsForZ1;
320  LogTrace("") << "> Z rejection: muons above " << ptThrForZ2_ << " [GeV]: " << nmuonsForZ2;
321 
322  // MET
323  Handle<View<MET> > metCollection;
324  if (!ev.getByToken(metToken_, metCollection)) {
325  //LogWarning("") << ">>> MET collection does not exist !!!";
326  return;
327  }
328  const MET& met = metCollection->at(0);
329  double met_et = met.pt();
330  LogTrace("") << ">>> MET, MET_px, MET_py: " << met_et << ", " << met.px() << ", " << met.py() << " [GeV]";
331  met_before_->Fill(met_et);
332 
333  // Vertices in the event
335  if (!ev.getByToken(vertexTag_, vertexCollection)) {
336  LogError("") << ">>> Vertex collection does not exist !!!";
337  return;
338  }
339  unsigned int vertexCollectionSize = vertexCollection->size();
340 
341 
342 
343  int nvvertex = 0;
344  for (unsigned int i=0; i<vertexCollectionSize; i++) {
345  const Vertex& vertex = vertexCollection->at(i);
346  if (vertex.isValid()) nvvertex++;
347  }
348 
349  npvs_before_->Fill(nvvertex);
350 
351  bool trigger_fired = false;
353  if (!ev.getByToken(trigTag_, triggerResults)) {
354  //LogWarning("") << ">>> TRIGGER collection does not exist !!!";
355  return;
356  }
357  const edm::TriggerNames & trigNames = ev.triggerNames(*triggerResults);
358  // LogWarning("")<<"Loop over triggers";
359 
360  /* change faulty logic of triggering
361  for (unsigned int i=0; i<triggerResults->size(); i++)
362  {
363  const std::string trigName = trigNames.triggerName(i);
364 
365  bool found=false;
366  for(unsigned int index=0; index<trigPathNames_.size() && found==false; index++) {
367  size_t trigPath = trigName.find(trigPathNames_[index]); // 0 if found, pos if not
368  if (trigPath==0) found=true;
369  }
370  if(!found) {continue;}
371 
372  bool prescaled=false;
373  for (unsigned int ps= 0; ps< hltConfigProvider_.prescaleSize(); ps++){
374  const unsigned int prescaleValue = hltConfigProvider_.prescaleValue(ps, trigName) ;
375  if (prescaleValue != 1) prescaled =true;
376  }
377 
378  if( triggerResults->accept(i) && !prescaled){ trigger_fired=true;}
379  // LogWarning("")<<"TrigNo: "<<i<<" "<<found<<" "<<trigName<<" ---> FIRED";}
380  }
381  */
382 
383  // get the prescale set for this event
384  const int prescaleSet=hltConfigProvider_.prescaleSet(ev,iSet);
385  if (prescaleSet==-1) {
386  LogTrace("") << "Failed to determine prescaleSet\n";
387  //std::cout << "Failed to determine prescaleSet. Check the GlobalTag in cfg\n";
388  return;
389  }
390 
391  for (unsigned int i=0; (i<triggerResults->size()) && (trigger_fired==false); i++) {
392  // skip trigger, if it did not fire
393  if (!triggerResults->accept(i)) continue;
394 
395  // skip trigger, if it is not on our list
396  bool found=false;
397  const std::string trigName = trigNames.triggerName(i);
398  for(unsigned int index=0; index<trigPathNames_.size() && found==false; index++) {
399  if ( trigName.find(trigPathNames_.at(index)) == 0 ) found=true;
400  }
401  if(!found) continue;
402 
403  // skip trigger, if it is prescaled
404  if (prescaleSet!=-1) {
405  if (hltConfigProvider_.prescaleValue(prescaleSet,trigName) != 1)
406  continue;
407  }
408  else {
409  // prescaleSet is not known.
410  // This branch is not needed, if prescaleSet=-1 forces to skip event
411  int prescaled=0;
412  for (unsigned int ps=0;
413  !prescaled && (ps<hltConfigProvider_.prescaleSize());
414  ++ps) {
415  if (hltConfigProvider_.prescaleValue(ps, trigName) != 1) {
416  prescaled=1;
417  }
418  }
419  if (prescaled) {
420  //std::cout << "trigger prescaled\n";
421  continue;
422  }
423  }
424 
425  //std::cout << "found unprescaled trigger that fired: " << trigName << "\n";
426  trigger_fired=true;
427  }
428  //if (trigger_fired) std::cout << "\n\tGot Trigger\n";
429 
430  trig_before_->Fill(trigger_fired);
431 
432  // Jet collection
433  Handle<View<Jet> > jetCollection;
434  if (!ev.getByToken(jetToken_, jetCollection)) {
435  //LogError("") << ">>> JET collection does not exist !!!";
436  return;
437  }
438  unsigned int jetCollectionSize = jetCollection->size();
439  int njets = 0; int LEADJET=-1; double max_pt=0;
440  for (unsigned int i=0; i<jetCollectionSize; i++) {
441  const Jet& jet = jetCollection->at(i);
442  double minDistance=99999; // This is in order to use PFJets
443  for (unsigned int j=0; j<muonCollectionSize; j++) {
444  const Muon& mu = muonCollection->at(j);
445  double distance = sqrt( (mu.eta()-jet.eta())*(mu.eta()-jet.eta()) +(mu.phi()-jet.phi())*(mu.phi()-jet.phi()) );
446  if (minDistance>distance) minDistance=distance;
447  }
448  if (minDistance<0.3) continue; // 0.3 is the isolation cone around the muon
449  if(jet.et()>max_pt) { LEADJET=i; max_pt=jet.et();}
450  if (jet.et()>eJetMin_) {njets++;}
451  }
452 
453 
454  LogTrace("") << ">>> Total number of jets: " << jetCollectionSize;
455  LogTrace("") << ">>> Number of jets above " << eJetMin_ << " [GeV]: " << njets;
456  njets_before_->Fill(njets);
457  double lead_jet_pt=-1;
458  double lead_jet_eta=-100;
459  if(LEADJET!=-1){
460  const Jet& leadJet = jetCollection->at(LEADJET);
461  leadingjet_pt_before_->Fill(leadJet.pt());
462  leadingjet_eta_before_->Fill(leadJet.eta());
463  lead_jet_pt=leadJet.pt();
464  lead_jet_eta=leadJet.eta();
465  }
466  //Photon Collection
467  Handle<View<Photon> > photonCollection;
468  if(!ev.getByToken(phoTag_, photonCollection)){
469  //LogError("")
470  return;
471  }
472  unsigned int ngam=0;
473 
474  for (unsigned int i=0; i<photonCollection->size(); i++){
475  const Photon &ph = photonCollection->at(i);
476  double photonPt = ph.pt();
477  if (photonPt> ptThrForPhoton_) {
478  ngam++;
479  phEta_->Fill(ph.eta());
480  }
481  phPt_->Fill(photonPt);
482  }
483  nph_->Fill(ngam);
484  LogTrace("") << " >>> N photons " << ngam << std::endl;
485 
486  nmuons_->Fill(muonCollectionSize);
487 
489  //Handle<View<Photon> > pfPhotonCollection;
491  //if(!ev.getByLabel(pfPhoTag_,pfPhotonCollection)){
493  //return;
494  //}
495  //unsigned int npfgam=0;
496  //
497  //for (unsigned int i=0; i<pfPhotonCollection->size(); i++){
498  // const Photon &ph = pfPhotonCollection->at(i);
499  // double photonPt = ph.pt();
500  // if (photonPt> ptThrForPhoton_) npfgam++;
501  // pfphPt_->Fill(photonPt);
502  // }
503  //npfph_->Fill(npfgam);
504  //LogTrace("") << " >>> N PF photons " << npfgam << std::endl;
505 
506  // Start counting
507  nall++;
508 
509  // Histograms per event should be done only once, so keep track of them
510  bool hlt_hist_done = false;
511  bool zhlt_hist_done = false;
512  bool zjets_hist_done = false;
513  bool zfullsel_hist_done = false;
514  bool met_hist_done = false;
515  bool njets_hist_done = false;
516  bool wfullsel_hist_done = false;
517 
518  // Central W->mu nu selection criteria
519  const int NFLAGS = 11;
520  bool muon_sel[NFLAGS];
521  const int NFLAGSZ = 13;
522  bool zmuon_sel[NFLAGSZ];
523  bool muon4Z=false;
524 
525  double number_of_muons=0;
526  double number_of_goodMuons=0;
527 
528 
529  for (unsigned int i=0; i<muonCollectionSize; i++) {
530  for (int j=0; j<NFLAGS; ++j) {
531  muon_sel[j] = false;
532  }
533 
534  number_of_muons++;
535 
536  const Muon& mu = muonCollection->at(i);
537  if (!mu.isGlobalMuon()) continue;
538  if (mu.globalTrack().isNull()) continue;
539  if (mu.innerTrack().isNull()) continue;
540 
541  LogTrace("") << "> Wsel: processing muon number " << i << "...";
542  reco::TrackRef gm = mu.globalTrack();
543  reco::TrackRef tk = mu.innerTrack();
544 
545  // Pt,eta cuts
546  double pt = mu.pt();
547  double eta = mu.eta();
548  LogTrace("") << "\t... pt, eta: " << pt << " [GeV], " << eta;;
549  if (pt>ptCut_) muon_sel[0] = true;
550  if (fabs(eta)<etaCut_) muon_sel[1] = true;
551 
552  double charge=mu.charge();
553 
554  // d0, chi2, nhits quality cuts
555  double dxy = gm->dxy(beamSpotHandle->position());
556  double normalizedChi2 = gm->normalizedChi2();
557  double trackerHits = tk->hitPattern().numberOfValidTrackerHits();
558  int pixelHits = tk->hitPattern().numberOfValidPixelHits();
559  int muonHits = gm->hitPattern().numberOfValidMuonHits();
560  int nMatches = mu.numberOfMatches();
561 
562  LogTrace("") << "\t... dxy, normalizedChi2, trackerHits, isTrackerMuon?: " << dxy << " [cm], " << normalizedChi2 << ", " << trackerHits << ", " << mu.isTrackerMuon();
563  if (fabs(dxy)<dxyCut_) muon_sel[2] = true;
564 
565  bool quality=true;
566 
567  if (normalizedChi2>normalizedChi2Cut_) quality =false;
568  if (trackerHits<trackerHitsCut_) quality =false;
569  if (pixelHits<pixelHitsCut_) quality =false;
570  if (muonHits<muonHitsCut_) quality=false;;
571  if (!mu.isTrackerMuon()) quality=false;
572  if (nMatches<nMatchesCut_) quality=false;
573  muon_sel[3]=quality;
574  if(quality) number_of_goodMuons++;
575 
576  pt_before_->Fill(pt);
577  eta_before_->Fill(eta);
578  dxy_before_->Fill(dxy);
579  muoncharge_before_->Fill(charge);
580  goodewkmuon_before_->Fill(quality);
581 
582  // Charge asymmetry
583  //if (quality) {
584  // if (charge>0) ptPlus_before_->Fill(pt);
585  // if (charge<0) ptMinus_before_->Fill(pt);
586  //}
587 
588 
589  // Isolation cuts
590  double isovar = mu.isolationR03().sumPt;
591  if (isCombinedIso_) {
592  isovar += mu.isolationR03().emEt;
593  isovar += mu.isolationR03().hadEt;
594  }
595  if (isRelativeIso_) isovar /= pt;
596  if (isovar<isoCut03_) muon_sel[4] = true;
597 
598  LogTrace("") << "\t... isolation value" << isovar <<", isolated? " << muon_sel[6];
599  iso_before_->Fill(isovar);
600 
601 
602  // HLT (not mtched to muon for the time being)
603  if (trigger_fired) muon_sel[5] = true;
604 
605  // For Z:
606  if (pt>ptThrForZ1_ && fabs(eta)<etaCut_ && fabs(dxy)<dxyCut_ && quality && trigger_fired && isovar<isoCut03_) { muon4Z = true;}
607 
608 
609  // MET/MT cuts
610  double w_et = met_et+mu.pt();
611  double w_px = met.px()+mu.px();
612  double w_py = met.py()+mu.py();
613 
614  double massT = w_et*w_et - w_px*w_px - w_py*w_py;
615  massT = (massT>0) ? sqrt(massT) : 0;
616 
617  LogTrace("") << "\t... W mass, W_et, W_px, W_py: " << massT << ", " << w_et << ", " << w_px << ", " << w_py << " [GeV]";
618  if (massT>mtMin_ && massT<mtMax_) muon_sel[6] = true;
619  mt_before_->Fill(massT);
620  if (met_et>metMin_ && met_et<metMax_) muon_sel[7] = true;
621 
622  // Acoplanarity cuts
623  Geom::Phi<double> deltaphi(mu.phi()-atan2(met.py(),met.px()));
624  double acop = deltaphi.value();
625  if (acop<0) acop = - acop;
626  acop = M_PI - acop;
627  LogTrace("") << "\t... acoplanarity: " << acop;
628  if (acop<acopCut_) muon_sel[8] = true;
629  acop_before_->Fill(acop);
630 
631  // Remaining flags (from global event information)
632  if (nmuonsForZ1<1 || nmuonsForZ2<2) muon_sel[9] = true;
633  if (njets<=nJetMax_) muon_sel[10] = true;
634 
635  // Collect necessary flags "per muon"
636  int flags_passed = 0;
637  for (int j=0; j<NFLAGS; ++j) {
638  if (muon_sel[j]) flags_passed += 1;
639  }
640 
641  // Do N-1 histograms now (and only once for global event quantities)
642  if (flags_passed >= (NFLAGS-1)) {
643  if (!muon_sel[0] || flags_passed==NFLAGS)
644  pt_after_->Fill(pt);
645  if (!muon_sel[1] || flags_passed==NFLAGS)
646  eta_after_->Fill(eta);
647  if (!muon_sel[2] || flags_passed==NFLAGS)
648  dxy_after_->Fill(dxy);
649  if (!muon_sel[3] || flags_passed==NFLAGS)
650  goodewkmuon_after_->Fill(quality);
651  if (!muon_sel[4] || flags_passed==NFLAGS)
652  iso_after_->Fill(isovar);
653  if (!muon_sel[5] || flags_passed==NFLAGS)
654  if (!hlt_hist_done) trig_after_->Fill(trigger_fired);
655  hlt_hist_done = true;
656  if (!muon_sel[6] || flags_passed==NFLAGS)
657  mt_after_->Fill(massT);
658  if (!muon_sel[7] || flags_passed==NFLAGS)
659  if (!met_hist_done) met_after_->Fill(met_et);
660  met_hist_done = true;
661  if (!muon_sel[8] || flags_passed==NFLAGS)
662  acop_after_->Fill(acop);
663  // no action here for muon_sel[9]
664  if (!muon_sel[10] || flags_passed==NFLAGS) {
665  if (!njets_hist_done) {
666  njets_after_->Fill(njets);
667  leadingjet_pt_after_->Fill(lead_jet_pt);
668  leadingjet_eta_after_->Fill(lead_jet_eta);
669  }
670  njets_hist_done = true;
671  }
672  if( flags_passed==NFLAGS ) {
673  if (!wfullsel_hist_done){
674  npvs_after_->Fill(nvvertex);
675  muoncharge_after_->Fill(charge);
676  //if (charge>0) ptPlus_afterW_->Fill(pt);
677  //if (charge<0) ptMinus_afterW_->Fill(pt);
678  }
679  wfullsel_hist_done=true;
680  }
681  }
682 
683 
684  // The cases in which the event is rejected as a Z are considered independently:
685  if ( muon4Z && !muon_sel[9]){
686 
687  // Plots for 2 muons
688  for (unsigned int j=i+1; j<muonCollectionSize; j++) {
689 
690  for (int ij=0; ij<NFLAGSZ; ++ij) {
691  zmuon_sel[ij] = false;
692  }
693 
694  for (int ji=0; ji<5; ++ji ) {
695  zmuon_sel[ji] = muon_sel[ji];
696  }
697 
698  const Muon& mu2 = muonCollection->at(j);
699  if (!mu2.isGlobalMuon()) continue;
700  if (mu2.charge() * charge != -1 ) continue;
701  reco::TrackRef gm2 = mu2.globalTrack();
702  reco::TrackRef tk2 = mu2.innerTrack();
703  double pt2 = mu2.pt(); if (pt2>ptThrForZ2_) zmuon_sel[5] = true;
704  double eta2=mu2.eta(); if (fabs(eta2)<etaCut_) zmuon_sel[6] = true;
705  double dxy2 = gm2->dxy(beamSpotHandle->position()); if (fabs(dxy2)<dxyCut_) zmuon_sel[7] = true;
706  double normalizedChi22 = gm2->normalizedChi2();
707  double trackerHits2 = tk2->hitPattern().numberOfValidTrackerHits();
708  int pixelHits2 = tk2->hitPattern().numberOfValidPixelHits();
709  int muonHits2 = gm2->hitPattern().numberOfValidMuonHits();
710  int nMatches2 = mu2.numberOfMatches();
711  bool quality2=true;
712  if (normalizedChi22>normalizedChi2Cut_) quality2 = false;
713  if (trackerHits2<trackerHitsCut_) quality2 = false;
714  if (pixelHits2<pixelHitsCut_) quality2 = false;
715  if (muonHits2<muonHitsCut_) quality2 = false;
716  if (!mu2.isTrackerMuon()) quality2 = false;
717  if (nMatches2<nMatchesCut_) quality2 = false;
718  zmuon_sel[8]=quality2;
719  double isovar2 = mu2.isolationR03().sumPt;
720  if (isCombinedIso_) {
721  isovar2 += mu2.isolationR03().emEt;
722  isovar2 += mu2.isolationR03().hadEt;
723  }
724  if (isRelativeIso_) isovar2 /= pt2;
725  if (isovar2<isoCut03_) zmuon_sel[9] = true;
726  if (trigger_fired) zmuon_sel[10] = true;
727  const math::XYZTLorentzVector ZRecoGlb (mu.px()+mu2.px(), mu.py()+mu2.py() , mu.pz()+mu2.pz(), mu.p()+mu2.p());
728  if (ZRecoGlb.mass()>dimuonMassMin_ && ZRecoGlb.mass()<dimuonMassMax_) zmuon_sel[11] = true;
729 
730  //jet flag
731  if (njets <=nJetMax_) zmuon_sel[12] = true;
732 
733  // start filling histos: N-1 plots
734  int flags_passed_z = 0;
735 
736  for (int jj=0; jj<NFLAGSZ; ++jj) {
737  if (zmuon_sel[jj]) ++flags_passed_z ;
738  }
739 
740  if (flags_passed_z >= (NFLAGSZ-1)) {
741  if (!zmuon_sel[0] || flags_passed_z==NFLAGSZ) {pt1_afterZ_->Fill(pt); }
742  if (!zmuon_sel[1] || flags_passed_z==NFLAGSZ) {eta1_afterZ_->Fill(eta); }
743  if (!zmuon_sel[2] || flags_passed_z==NFLAGSZ) {dxy1_afterZ_->Fill(dxy); }
744  if (!zmuon_sel[3] || flags_passed_z==NFLAGSZ) {goodewkmuon1_afterZ_->Fill(quality); }
745  if (!zmuon_sel[4] || flags_passed_z==NFLAGSZ) {iso1_afterZ_->Fill(isovar); }
746  if (!zmuon_sel[5] || flags_passed_z==NFLAGSZ) { pt2_afterZ_->Fill(pt2); }
747  if (!zmuon_sel[6] || flags_passed_z==NFLAGSZ) { eta2_afterZ_->Fill(eta2); }
748  if (!zmuon_sel[7] || flags_passed_z==NFLAGSZ) {dxy2_afterZ_->Fill(dxy2); }
749  if (!zmuon_sel[8] || flags_passed_z==NFLAGSZ) {goodewkmuon2_afterZ_->Fill(quality2); }
750  if (!zmuon_sel[9] || flags_passed_z==NFLAGSZ) {iso2_afterZ_->Fill(isovar2); }
751  if (!zmuon_sel[10] || flags_passed_z==NFLAGSZ) {
752  if (!zhlt_hist_done) ztrig_afterZ_->Fill(trigger_fired);
753  zhlt_hist_done = true;
754  }
755  if (!zmuon_sel[11] || flags_passed_z==NFLAGSZ) {dimuonmass_afterZ_->Fill(ZRecoGlb.mass()); }
756  if (!zmuon_sel[12] || flags_passed_z==NFLAGSZ ){
757  if(!zjets_hist_done){
758  njets_afterZ_->Fill(njets);
759  leadingjet_pt_afterZ_->Fill(lead_jet_pt);
760  leadingjet_eta_afterZ_->Fill(lead_jet_eta);
761  }
762  zjets_hist_done=true;
763  }
764  if(flags_passed_z==NFLAGSZ) {
765  met_afterZ_->Fill(met_et);
766  if(!zfullsel_hist_done){
767  npvs_afterZ_->Fill(nvvertex);
768  muoncharge_afterZ_->Fill(charge);
769  if (charge>0) {
770  //ptPlus_afterZ_->Fill(mu.pt());
771  //ptMinus_afterZ_->Fill(mu2.pt());
772  ptDiffPM_afterZ_->Fill(mu.pt()-mu2.pt());
773  }
774  else {
775  //ptPlus_afterZ_->Fill(mu2.pt());
776  //ptMinus_afterZ_->Fill(mu.pt());
777  ptDiffPM_afterZ_->Fill(mu2.pt()-mu.pt());
778  }
779  }
780  zfullsel_hist_done=true;
781  }
782  }
783  }
784  }
785  }
786 
787  if (zfullsel_hist_done) {
788  // here was a Z candidate
789  n_zselPt1thr_->Fill(nmuonsForZ1);
790  n_zselPt2thr_->Fill(nmuonsForZ2);
791  }
792 
793  //nmuons_->Fill(number_of_muons);
794  //nmuons_->Fill(muonCollectionSize);
795  ngoodmuons_->Fill(number_of_goodMuons);
796 
797  return;
798 
799 }
800 
801 // Local Variables:
802 // show-trailing-whitespace: t
803 // truncate-lines: t
804 // End:
MonitorElement * met_before_
Definition: EwkMuDQM.h:112
float hadEt
hcal sum-Et
Definition: MuonIsolation.h:9
DQMStore * theDbe
Definition: EwkMuDQM.h:96
virtual double et() const GCC11_FINAL
transverse energy
int i
Definition: DBlmapReader.cc:9
MonitorElement * ptDiffPM_afterZ_
Definition: EwkMuDQM.h:134
double etaCut_
Definition: EwkMuDQM.h:71
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:204
MonitorElement * dimuonmass_afterZ_
Definition: EwkMuDQM.h:154
unsigned int nall
Definition: EwkMuDQM.h:88
int nMatchesCut_
Definition: EwkMuDQM.h:58
virtual void endJob()
Definition: EwkMuDQM.cc:263
MonitorElement * phEta_
Definition: EwkMuDQM.h:172
tuple met
____________________________________________________________________________||
Definition: CaloMET_cfi.py:7
EwkMuDQM(const edm::ParameterSet &)
Definition: EwkMuDQM.cc:37
virtual void beginJob()
Definition: EwkMuDQM.cc:126
float sumPt
sum-pt of tracks
Definition: MuonIsolation.h:7
MonitorElement * njets_afterZ_
Definition: EwkMuDQM.h:119
unsigned int nrec
Definition: EwkMuDQM.h:89
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:872
virtual double p() const GCC11_FINAL
magnitude of momentum vector
MonitorElement * iso2_afterZ_
Definition: EwkMuDQM.h:146
double mtMax_
Definition: EwkMuDQM.h:68
MonitorElement * npvs_before_
Definition: EwkMuDQM.h:156
double ptThrForPhoton_
Definition: EwkMuDQM.h:82
virtual TrackRef innerTrack() const
Definition: Muon.h:48
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
MonitorElement * dxy1_afterZ_
Definition: EwkMuDQM.h:139
MonitorElement * njets_before_
Definition: EwkMuDQM.h:117
MonitorElement * dxy_before_
Definition: EwkMuDQM.h:102
MonitorElement * ztrig_afterZ_
Definition: EwkMuDQM.h:152
MonitorElement * trig_before_
Definition: EwkMuDQM.h:108
MonitorElement * trig_after_
Definition: EwkMuDQM.h:109
MonitorElement * leadingjet_eta_afterZ_
Definition: EwkMuDQM.h:125
double metMax_
Definition: EwkMuDQM.h:66
bool isTrackerMuon() const
Definition: Muon.h:219
MonitorElement * muoncharge_before_
Definition: EwkMuDQM.h:160
Base class for all types of Jets.
Definition: Jet.h:20
bool isValid() const
Tells whether the vertex is valid.
Definition: Vertex.h:60
edm::EDGetTokenT< reco::BeamSpot > beamSpotTag_
Definition: EwkMuDQM.h:49
MonitorElement * eta2_afterZ_
Definition: EwkMuDQM.h:143
edm::EDGetTokenT< edm::TriggerResults > trigTag_
Definition: EwkMuDQM.h:43
double ptCut_
Definition: EwkMuDQM.h:70
double isoCut03_
Definition: EwkMuDQM.h:62
MonitorElement * npvs_afterZ_
Definition: EwkMuDQM.h:158
bool isGlobalMuon() const
Definition: Muon.h:218
MonitorElement * leadingjet_eta_before_
Definition: EwkMuDQM.h:123
std::vector< std::string > trigPathNames_
Definition: EwkMuDQM.h:50
double eJetMin_
Definition: EwkMuDQM.h:79
T eta() const
MonitorElement * acop_before_
Definition: EwkMuDQM.h:114
MonitorElement * leadingjet_pt_after_
Definition: EwkMuDQM.h:121
virtual double pz() const GCC11_FINAL
z coordinate of momentum vector
double charge(const std::vector< uint8_t > &Ampls)
tuple vertexCollection
MonitorElement * goodewkmuon_before_
Definition: EwkMuDQM.h:104
virtual double py() const GCC11_FINAL
y coordinate of momentum vector
MonitorElement * eta_after_
Definition: EwkMuDQM.h:101
MonitorElement * muoncharge_afterZ_
Definition: EwkMuDQM.h:162
MonitorElement * pt_before_
Definition: EwkMuDQM.h:98
unsigned int nhlt
Definition: EwkMuDQM.h:91
MonitorElement * dxy2_afterZ_
Definition: EwkMuDQM.h:144
void Fill(long long x)
MonitorElement * leadingjet_pt_before_
Definition: EwkMuDQM.h:120
MonitorElement * goodewkmuon1_afterZ_
Definition: EwkMuDQM.h:140
MonitorElement * iso_before_
Definition: EwkMuDQM.h:106
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
MonitorElement * npvs_after_
Definition: EwkMuDQM.h:157
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
MonitorElement * goodewkmuon2_afterZ_
Definition: EwkMuDQM.h:145
unsigned int prescaleValue(unsigned int set, const std::string &trigger) const
HLT prescale value in specific prescale set for a specific trigger path.
MonitorElement * njets_after_
Definition: EwkMuDQM.h:118
bool isNull() const
Checks for null.
Definition: Ref.h:247
virtual void endRun(const edm::Run &, const edm::EventSetup &)
Definition: EwkMuDQM.cc:266
MonitorElement * ngoodmuons_
Definition: EwkMuDQM.h:165
MonitorElement * n_zselPt2thr_
Definition: EwkMuDQM.h:150
double metMin_
Definition: EwkMuDQM.h:65
MonitorElement * pt2_afterZ_
Definition: EwkMuDQM.h:142
double ptThrForZ2_
Definition: EwkMuDQM.h:74
void init_histograms()
Definition: EwkMuDQM.cc:130
int nJetMax_
Definition: EwkMuDQM.h:80
Definition: MET.h:32
HLTConfigProvider hltConfigProvider_
Definition: EwkMuDQM.h:86
T sqrt(T t)
Definition: SSEVec.h:48
unsigned int nsel
Definition: EwkMuDQM.h:93
float emEt
ecal sum-Et
Definition: MuonIsolation.h:8
MonitorElement * met_afterZ_
Definition: EwkMuDQM.h:136
double dxyCut_
Definition: EwkMuDQM.h:53
virtual double px() const GCC11_FINAL
x coordinate of momentum vector
MonitorElement * leadingjet_eta_after_
Definition: EwkMuDQM.h:124
int j
Definition: DBlmapReader.cc:9
double dimuonMassMin_
Definition: EwkMuDQM.h:76
const int mu
Definition: Constants.h:22
bool isCombinedIso_
Definition: EwkMuDQM.h:61
double dimuonMassMax_
Definition: EwkMuDQM.h:77
static std::string const triggerResults
Definition: EdmProvDump.cc:41
MonitorElement * mt_after_
Definition: EwkMuDQM.h:111
MonitorElement * goodewkmuon_after_
Definition: EwkMuDQM.h:105
MonitorElement * muoncharge_after_
Definition: EwkMuDQM.h:161
MonitorElement * mt_before_
Definition: EwkMuDQM.h:110
#define LogTrace(id)
MonitorElement * eta_before_
Definition: EwkMuDQM.h:100
MonitorElement * iso1_afterZ_
Definition: EwkMuDQM.h:141
bool isRelativeIso_
Definition: EwkMuDQM.h:60
int numberOfMatches(ArbitrationType type=SegmentAndTrackArbitration) const
get number of chambers with matched segments
Definition: Muon.cc:60
virtual float eta() const GCC11_FINAL
momentum pseudorapidity
T value() const
Explicit access to value in case implicit conversion not OK.
Definition: Phi.h:38
static const char *const trigNames[]
Definition: EcalDumpRaw.cc:74
virtual void beginRun(const edm::Run &, const edm::EventSetup &)
Definition: EwkMuDQM.cc:109
edm::InputTag jetTag_
Definition: EwkMuDQM.h:42
int pixelHitsCut_
Definition: EwkMuDQM.h:56
edm::EDGetTokenT< edm::View< reco::Vertex > > vertexTag_
Definition: EwkMuDQM.h:48
MonitorElement * nmuons_
Definition: EwkMuDQM.h:164
double normalizedChi2Cut_
Definition: EwkMuDQM.h:54
#define M_PI
Definition: BFit3D.cc:3
edm::InputTag metTag_
Definition: EwkMuDQM.h:41
int prescaleSet(const edm::Event &iEvent, const edm::EventSetup &iSetup) const
MonitorElement * pt_after_
Definition: EwkMuDQM.h:99
MonitorElement * iso_after_
Definition: EwkMuDQM.h:107
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:27
virtual int charge() const GCC11_FINAL
electric charge
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
MonitorElement * eta1_afterZ_
Definition: EwkMuDQM.h:138
MonitorElement * ptDiffPM_before_
Definition: EwkMuDQM.h:129
MonitorElement * pt1_afterZ_
Definition: EwkMuDQM.h:137
std::string const & label() const
Definition: InputTag.h:42
MonitorElement * nph_
Definition: EwkMuDQM.h:168
int trackerHitsCut_
Definition: EwkMuDQM.h:55
double mtMin_
Definition: EwkMuDQM.h:67
unsigned int nz
Definition: EwkMuDQM.h:94
MonitorElement * phPt_
Definition: EwkMuDQM.h:170
double ptThrForZ1_
Definition: EwkMuDQM.h:73
edm::EDGetTokenT< edm::View< reco::Jet > > jetToken_
Definition: EwkMuDQM.h:46
MonitorElement * dxy_after_
Definition: EwkMuDQM.h:103
unsigned int prescaleSize() const
int muonHitsCut_
Definition: EwkMuDQM.h:57
MonitorElement * met_after_
Definition: EwkMuDQM.h:113
volatile std::atomic< bool > shutdown_flag false
edm::EDGetTokenT< edm::View< reco::Muon > > muonTag_
Definition: EwkMuDQM.h:44
virtual float pt() const GCC11_FINAL
transverse momentum
MonitorElement * n_zselPt1thr_
Definition: EwkMuDQM.h:149
unsigned int niso
Definition: EwkMuDQM.h:90
virtual void analyze(const edm::Event &, const edm::EventSetup &)
Definition: EwkMuDQM.cc:270
edm::EDGetTokenT< edm::View< reco::MET > > metToken_
Definition: EwkMuDQM.h:45
edm::EDGetTokenT< edm::View< reco::Photon > > phoTag_
Definition: EwkMuDQM.h:47
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:584
MonitorElement * dimuonmass_before_
Definition: EwkMuDQM.h:153
const MuonIsolation & isolationR03() const
Definition: Muon.h:158
Definition: Run.h:41
double acopCut_
Definition: EwkMuDQM.h:64
unsigned int nmet
Definition: EwkMuDQM.h:92
bool isValidHltConfig_
Definition: EwkMuDQM.h:85
virtual TrackRef globalTrack() const
reference to Track reconstructed in both tracked and muon detector
Definition: Muon.h:54
MonitorElement * leadingjet_pt_afterZ_
Definition: EwkMuDQM.h:122
MonitorElement * acop_after_
Definition: EwkMuDQM.h:115