CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
QcdUeDQM.cc
Go to the documentation of this file.
1 
2 /*
3  This is the DQM code for UE physics plots
4  11/12/2009 Sunil Bansal
5 */
36 #include <TString.h>
37 #include <TMath.h>
38 #include <TH1F.h>
39 #include <TH2F.h>
40 #include <TH3F.h>
41 #include <TProfile.h>
42 using namespace std;
43 using namespace edm;
44 
45 #define CP(level) if (level >= verbose_)
46 
47 struct deleter {
48  void operator()(TH3F *&h) {
49  delete h;
50  h = 0;
51  }
52 };
53 
54 //--------------------------------------------------------------------------------------------------
56  : hltResName_(parameters.getUntrackedParameter<string>("hltTrgResults")),
57  verbose_(parameters.getUntrackedParameter<int>("verbose", 3)),
58  tgeo_(0),
59  theDbe_(0),
60  repSumMap_(0),
61  repSummary_(0),
62  h2TrigCorr_(0),
63  ptMin_(parameters.getParameter<double>("ptMin")),
64  minRapidity_(parameters.getParameter<double>("minRapidity")),
65  maxRapidity_(parameters.getParameter<double>("maxRapidity")),
66  tip_(parameters.getParameter<double>("tip")),
67  lip_(parameters.getParameter<double>("lip")),
68  diffvtxbs_(parameters.getParameter<double>("diffvtxbs")),
69  ptErr_pt_(parameters.getParameter<double>("ptErr_pt")),
70  vtxntk_(parameters.getParameter<double>("vtxntk")),
71  minHit_(parameters.getParameter<int>("minHit")),
72  pxlLayerMinCut_(parameters.getParameter<double>("pxlLayerMinCut")),
73  requirePIX1_(parameters.getParameter<bool>("requirePIX1")),
74  min3DHit_(parameters.getParameter<int>("min3DHit")),
75  maxChi2_(parameters.getParameter<double>("maxChi2")),
76  bsuse_(parameters.getParameter<bool>("bsuse")),
77  allowTriplets_(parameters.getParameter<bool>("allowTriplets")),
78  bsPos_(parameters.getParameter<double>("bsPos")),
79  caloJetLabel_(consumes<reco::CaloJetCollection>(
80  parameters.getUntrackedParameter<edm::InputTag>("caloJetTag"))),
81  chargedJetLabel_(consumes<reco::TrackJetCollection>(
82  parameters.getUntrackedParameter<edm::InputTag>("chargedJetTag"))),
83  trackLabel_(consumes<reco::TrackCollection>(
84  parameters.getUntrackedParameter<edm::InputTag>("trackTag"))),
85  vtxLabel_(consumes<reco::VertexCollection>(
86  parameters.getUntrackedParameter<edm::InputTag>("vtxTag"))),
87  bsLabel_(consumes<reco::BeamSpot>(
88  parameters.getParameter<edm::InputTag>("beamSpotTag"))) {
89  // Constructor.
90  std::vector<std::string> quality =
91  parameters.getParameter<std::vector<std::string> >("quality");
92  for (unsigned int j = 0; j < quality.size(); j++)
93  quality_.push_back(reco::TrackBase::qualityByName(quality[j]));
94  std::vector<std::string> algorithm =
95  parameters.getParameter<std::vector<std::string> >("algorithm");
96  for (unsigned int j = 0; j < algorithm.size(); j++)
97  algorithm_.push_back(reco::TrackBase::algoByName(algorithm[j]));
98 
99  if (parameters.exists("hltTrgNames"))
100  hltTrgNames_ =
101  parameters.getUntrackedParameter<vector<string> >("hltTrgNames");
102 
103  if (parameters.exists("hltProcNames"))
104  hltProcNames_ =
105  parameters.getUntrackedParameter<vector<string> >("hltProcNames");
106  else {
107  // hltProcNames_.push_back("FU");
108  hltProcNames_.push_back("HLT");
109  }
110 
111  isHltConfigSuccessful_ = false; // init
112 }
113 
114 //--------------------------------------------------------------------------------------------------
116  // Destructor.
117 }
118 
119 //--------------------------------------------------------------------------------------------------
120 void QcdUeDQM::analyze(const Event &iEvent, const EventSetup &iSetup) {
121  if (!isHltConfigSuccessful_) return;
122 
123  // Analyze the given event.
124 
126  bool ValidBS_ = iEvent.getByToken(bsLabel_, beamSpot);
127  if (!ValidBS_) return;
128 
130  bool ValidTrack_ = iEvent.getByToken(trackLabel_, tracks);
131  if (!ValidTrack_) return;
132 
134  bool ValidTrackJet_ = iEvent.getByToken(chargedJetLabel_, trkJets);
135  if (!ValidTrackJet_) return;
136 
138  bool ValidCaloJet_ = iEvent.getByToken(caloJetLabel_, calJets);
139  if (!ValidCaloJet_) return;
140 
142  bool ValidVtxColl_ = iEvent.getByToken(vtxLabel_, vertexColl);
143  if (!ValidVtxColl_) return;
144 
145  reco::TrackCollection tracks_sort = *tracks;
146  std::sort(tracks_sort.begin(), tracks_sort.end(), PtSorter());
147 
148  // get tracker geometry
149  /* ESHandle<TrackerGeometry> trackerHandle;
150  iSetup.get<TrackerDigiGeometryRecord>().get(trackerHandle);
151  tgeo_ = trackerHandle.product();
152  if (!tgeo_)return;
153  */
154  selected_.clear();
155  fillHltBits(iEvent, iSetup);
156  // select good tracks
157  if (fillVtxPlots(beamSpot.product(), vertexColl)) {
158  fill1D(hNevts_, 1);
159  for (reco::TrackCollection::const_iterator Trk = tracks_sort.begin();
160  Trk != tracks_sort.end(); ++Trk) {
161 
162  if (trackSelection(*Trk, beamSpot.product(), vtx1, vertexColl->size()))
163  selected_.push_back(&*Trk);
164  }
165 
167  fillChargedJetSpectra(trkJets);
168  // fillCaloJetSpectra(calJets);
170  if (trkJets->size() > 0) fillUE_with_ChargedJets(selected_, trkJets);
171  // if(calJets->size()>0)fillUE_with_CaloJets(selected_,calJets);
172  }
173 }
174 
175 //--------------------------------------------------------------------------------------------------
177  // Begin job and setup the DQM store.
178 
180  if (!theDbe_) return;
181 
182  // theDbe_->setCurrentFolder("Physics/QcdUe");
183 }
184 
185 //--------------------------------------------------------------------------------------------------
187  const EventSetup &iSetup) {
188  if (!isHltConfigSuccessful_) return;
189 
190  // At the moment, nothing needed to be done.
191 }
192 
193 //--------------------------------------------------------------------------------------------------
194 void QcdUeDQM::beginRun(const Run &run, const EventSetup &iSetup) {
195 
196  // indicating change of HLT cfg at run boundries
197  // for HLTConfigProvider::init()
198  bool isHltCfgChange = false;
199  isHltConfigSuccessful_ = false; // init
200 
201  string teststr;
202  for (size_t i = 0; i < hltProcNames_.size(); ++i) {
203  if (i > 0) teststr += ", ";
204  teststr += hltProcNames_.at(i);
205  if (hltConfig.init(run, iSetup, hltProcNames_.at(i), isHltCfgChange)) {
206  isHltConfigSuccessful_ = true;
208  if (hltResName_.find(':') == string::npos)
209  hltUsedResName_ += "::";
210  else
211  hltUsedResName_ += ":";
213  break;
214  }
215  }
216 
217  if (!isHltConfigSuccessful_) return;
218 
219  // setup "Any" bit
220  hltTrgBits_.clear();
221  hltTrgBits_.push_back(-1);
222  hltTrgDeci_.clear();
223  hltTrgDeci_.push_back(true);
224  hltTrgUsedNames_.clear();
225  hltTrgUsedNames_.push_back("Any");
226 
227  // figure out relation of trigger name to trigger bit and store used trigger
228  // names/bits
229  for (size_t i = 0; i < hltTrgNames_.size(); ++i) {
230  const string &n1(hltTrgNames_.at(i));
231  // unsigned int hlt_prescale = hltConfig.prescaleValue(iSetup, n1);
232  // cout<<"trigger=="<<n1<<"presc=="<<hlt_prescale<<endl;
233  bool found = 0;
234  for (size_t j = 0; j < hltConfig.size(); ++j) {
235  const string &n2(hltConfig.triggerName(j));
236  if (n2 == n1) {
237  hltTrgBits_.push_back(j);
238  hltTrgUsedNames_.push_back(n1);
239  hltTrgDeci_.push_back(false);
240  found = 1;
241  break;
242  }
243  }
244  if (!found) {
245  CP(2) cout << "Could not find trigger bit" << endl;
246  }
247  }
248 
249  // book monitoring histograms
250  createHistos();
251  isHltConfigSuccessful_ = true;
252 }
253 
254 //--------------------------------------------------------------------------------------------------
255 void QcdUeDQM::book1D(std::vector<MonitorElement *> &mes,
256  const std::string &name, const std::string &title, int nx,
257  double x1, double x2, bool sumw2, bool sbox) {
258  // Book 1D histos.
259 
260  for (size_t i = 0; i < hltTrgUsedNames_.size(); ++i) {
261  std::string folderName = "Physics/QcdUe/" + hltTrgUsedNames_.at(i);
262  theDbe_->setCurrentFolder(folderName);
263  MonitorElement *e = theDbe_->book1D(
264  Form("%s_%s", name.c_str(), hltTrgUsedNames_.at(i).c_str()),
265  Form("%s: %s", hltTrgUsedNames_.at(i).c_str(), title.c_str()), nx, x1,
266  x2);
267  TH1 *h1 = e->getTH1();
268  if (sumw2) {
269  if (0 == h1->GetSumw2N()) { // protect against re-summing (would cause
270  // exception)
271  h1->Sumw2();
272  }
273  }
274  h1->SetStats(sbox);
275  mes.push_back(e);
276  }
277 }
278 
279 //--------------------------------------------------------------------------------------------------
280 void QcdUeDQM::book2D(std::vector<MonitorElement *> &mes,
281  const std::string &name, const std::string &title, int nx,
282  double x1, double x2, int ny, double y1, double y2,
283  bool sumw2, bool sbox) {
284  // Book 2D histos.
285 
286  for (size_t i = 0; i < hltTrgUsedNames_.size(); ++i) {
287  std::string folderName = "Physics/QcdUe/" + hltTrgUsedNames_.at(i);
288  theDbe_->setCurrentFolder(folderName);
289  MonitorElement *e = theDbe_->book2D(
290  Form("%s_%s", name.c_str(), hltTrgUsedNames_.at(i).c_str()),
291  Form("%s: %s", hltTrgUsedNames_.at(i).c_str(), title.c_str()), nx, x1,
292  x2, ny, y1, y2);
293  TH1 *h1 = e->getTH1();
294  if (sumw2) {
295  if (0 == h1->GetSumw2N()) { // protect against re-summing (would cause
296  // exception)
297  h1->Sumw2();
298  }
299  }
300  h1->SetStats(sbox);
301  mes.push_back(e);
302  }
303 }
304 
305 //--------------------------------------------------------------------------------------------------
306 void QcdUeDQM::bookProfile(std::vector<MonitorElement *> &mes,
307  const std::string &name, const std::string &title,
308  int nx, double x1, double x2, double y1, double y2,
309  bool sumw2, bool sbox) {
310  // Book Profile histos.
311 
312  for (size_t i = 0; i < hltTrgUsedNames_.size(); ++i) {
313  std::string folderName = "Physics/QcdUe/" + hltTrgUsedNames_.at(i);
314  theDbe_->setCurrentFolder(folderName);
315  MonitorElement *e = theDbe_->bookProfile(
316  Form("%s_%s", name.c_str(), hltTrgUsedNames_.at(i).c_str()),
317  Form("%s: %s", hltTrgUsedNames_.at(i).c_str(), title.c_str()), nx, x1,
318  x2, y1, y2, " ");
319  mes.push_back(e);
320  }
321 }
322 //--------------------------------------------------------------------------------------------------
324  // Book histograms if needed.
325 
326  /* if (1) {
327  theDbe_->setCurrentFolder("Physics/EventInfo/");
328  repSumMap_ =
329  theDbe_->book2D("reportSummaryMap","reportSummaryMap",1,0,1,1,0,1);
330  repSummary_ = theDbe_->bookFloat("reportSummary");
331  }
332  */
333  theDbe_->setCurrentFolder("Physics/QcdUe");
334 
335  if (1) {
336  const int Nx = hltTrgUsedNames_.size();
337  const double x1 = -0.5;
338  const double x2 = Nx - 0.5;
339  h2TrigCorr_ = theDbe_->book2D("h2TriCorr", "Trigger bit x vs y;y&&!x;x&&y",
340  Nx, x1, x2, Nx, x1, x2);
341  for (size_t i = 1; i <= hltTrgUsedNames_.size(); ++i) {
344  }
345  TH1 *h = h2TrigCorr_->getTH1();
346  if (h) h->SetStats(0);
347  }
348  book1D(hNevts_, "hNevts", "number of events", 2, 0, 2);
349  book1D(hNtrackerLayer_, "hNtrackerLayer",
350  "number of tracker layers;multiplicity", 20, -0.5, 19.5);
351  book1D(hNtrackerPixelLayer_, "hNtrackerPixelLayer",
352  "number of pixel layers;multiplicity", 10, -0.5, 9.5);
353  book1D(hNtrackerStripPixelLayer_, "hNtrackerStripPixelLayer",
354  "number of strip + pixel layers;multiplicity", 30, -0.5, 39.5);
355  book1D(hRatioPtErrorPt_, "hRatioPtErrorPt", "ratio of pT error and track pT",
356  25, 0., 5.);
357  book1D(hTrkPt_, "hTrkPt", "pT of all tracks", 50, 0., 50.);
358  book1D(hTrkEta_, "hTrkEta", "eta of all tracks", 40, -4., 4.);
359  book1D(hTrkPhi_, "hTrkPhi", "phi of all tracks", 40, -4., 4.);
360  book1D(
361  hRatioDxySigmaDxyBS_, "hRatioDxySigmaDxyBS",
362  "ratio of transverse impact parameter and its significance wrt beam spot",
363  60, -10., 10);
364  book1D(hRatioDxySigmaDxyPV_, "hRatioDxySigmaDxyPV",
365  "ratio of transverse impact parameter and its significance wrt PV", 60,
366  -10., 10);
367  book1D(hRatioDzSigmaDzBS_, "hRatioDzSigmaDzBS",
368  "ratio of longitudinal impact parameter and its significance wrt beam "
369  "spot",
370  80, -20., 20);
371  book1D(hRatioDzSigmaDzPV_, "hRatioDzSigmaDzPV",
372  "ratio of longitudinal impact parameter and its significance wrt PV",
373  80, -20., 20);
374  book1D(hTrkChi2_, "hTrkChi2", "track chi2", 30, 0., 30);
375  book1D(hTrkNdof_, "hTrkNdof", "track NDOF", 100, 0, 100);
376 
377  book1D(hNgoodTrk_, "hNgoodTrk", "number of good tracks", 50, -0.5, 49.5);
378 
379  book1D(hGoodTrkPt500_, "hGoodTrkPt500",
380  "pT of all good tracks with pT > 500 MeV", 50, 0., 50.);
381  book1D(hGoodTrkEta500_, "hGoodTrkEta500",
382  "eta of all good tracks pT > 500 MeV", 40, -4., 4.);
383  book1D(hGoodTrkPhi500_, "hGoodTrkPhi500",
384  "phi of all good tracks pT > 500 MeV", 40, -4., 4.);
385 
386  book1D(hGoodTrkPt900_, "hGoodTrkPt900",
387  "pT of all good tracks with pT > 900 MeV", 50, 0., 50.);
388  book1D(hGoodTrkEta900_, "hGoodTrkEta900",
389  "eta of all good tracks pT > 900 MeV", 40, -4., 4.);
390  book1D(hGoodTrkPhi900_, "hGoodTrkPhi900",
391  "phi of all good tracks pT > 900 MeV", 40, -4., 4.);
392 
393  book1D(hNvertices_, "hNvertices", "number of vertices", 5, -0.5, 4.5);
394  book1D(hVertex_z_, "hVertex_z", "z position of vertex; z[cm]", 200, -50, 50);
395  book1D(hVertex_y_, "hVertex_y", "y position of vertex; y[cm]", 100, -5, 5);
396  book1D(hVertex_x_, "hVertex_x", "x position of vertex; x[cm]", 100, -5, 5);
397  book1D(hVertex_ndof_, "hVertex_ndof", "ndof of vertex", 100, 0, 100);
398  book1D(hVertex_rho_, "hVertex_rho", "rho of vertex", 100, 0, 5);
399  book1D(hVertex_z_bs_, "hVertex_z_bs",
400  "z position of vertex from beamspot; z[cm]", 200, -50, 50);
401 
402  book1D(hBeamSpot_z_, "hBeamSpot_z", "z position of beamspot; z[cm]", 100, -20,
403  20);
404  book1D(hBeamSpot_y_, "hBeamSpot_y", "y position of beamspot; y[cm]", 50, -10,
405  10);
406  book1D(hBeamSpot_x_, "hBeamSpot_x", "x position of beamspot; x[cm]", 50, -10,
407  10);
408 
409  if (1) {
410  const int Nx = 25;
411  const double x1 = 0.0;
412  const double x2 = 50.0;
413  book1D(hLeadingTrack_pTSpectrum_, "hLeadingTrack_pTSpectrum",
414  "pT spectrum of leading track;pT(GeV/c)", Nx, x1, x2);
415  // book1D(hLeadingCaloJet_pTSpectrum_,"hLeadingCalo_pTSpectrum","pT
416  // spectrum of leading calo jet;pT(GeV/c)",Nx,x1,x2);
417  book1D(hLeadingChargedJet_pTSpectrum_, "hLeadingChargedJet_pTSpectrum",
418  "pT spectrum of leading track jet;pT(GeV/c)", Nx, x1, x2);
419  }
420 
421  if (1) {
422  const int Nx = 24;
423  const double x1 = -4.;
424  const double x2 = 4.;
425  book1D(hLeadingTrack_phiSpectrum_, "hLeadingTrack_phiSpectrum",
426  "#phi spectrum of leading track;#phi", Nx, x1, x2);
427  // book1D(hLeadingCaloJet_phiSpectrum_,"hLeadingCaloJet_phiSpectrum","#phi
428  // spectrum of leading calo jet;#phi",Nx,x1,x2);
429  book1D(hLeadingChargedJet_phiSpectrum_, "hLeadingChargedJet_phiSpectrum",
430  "#phi spectrum of leading track jet;#phi", Nx, x1, x2);
431  }
432 
433  if (1) {
434  const int Nx = 24;
435  const double x1 = -4.;
436  const double x2 = 4.;
437  book1D(hLeadingTrack_etaSpectrum_, "hLeadingTrack_etaSpectrum",
438  "#eta spectrum of leading track;#eta", Nx, x1, x2);
439  // book1D(hLeadingCaloJet_etaSpectrum_,"hLeadingCaloJet_etaSpectrum","#eta
440  // spectrum of leading calo jet;#eta",Nx,x1,x2);
441  book1D(hLeadingChargedJet_etaSpectrum_, "hLeadingChargedJet_etaSpectrum",
442  "#eta spectrum of leading track jet;#eta", Nx, x1, x2);
443  }
444 
445  if (1) {
446  const int Nx = 75;
447  const double x1 = 0.0;
448  const double x2 = 75.0;
449  const double y1 = 0.;
450  const double y2 = 10.;
451  bookProfile(hdNdEtadPhi_pTMax_Toward500_, "hdNdEtadPhi_pTMax_Toward500",
452  "Average number of tracks (pT > 500 MeV) in toward region vs "
453  "leading track pT;pT(GeV/c);dN/d#eta d#phi",
454  Nx, x1, x2, y1, y2, 0, 0);
456  "hdNdEtadPhi_pTMax_Transverse500",
457  "Average number of tracks (pT > 500 MeV) in transverse region "
458  "vs leading track pT;pT(GeV/c);dN/d#eta d#phi",
459  Nx, x1, x2, y1, y2, 0, 0);
460  bookProfile(hdNdEtadPhi_pTMax_Away500_, "hdNdEtadPhi_pTMax_Away500",
461  "Average number of tracks (pT > 500 MeV) in away region vs "
462  "leading track pT;pT(GeV/c);dN/d#eta d#phi",
463  Nx, x1, x2, y1, y2, 0, 0);
464  /*
465  bookProfile(hdNdEtadPhi_caloJet_Toward500_,"hdNdEtadPhi_caloJet_Toward500",
466  "Average number of tracks (pT > 500 MeV) in toward region vs
467  leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
468  bookProfile(hdNdEtadPhi_caloJet_Transverse500_,"hdNdEtadPhi_caloJet_Transverse500",
469  "Average number of tracks (pT > 500 MeV) in transverse
470  region vs leading calo jet pT;pT(GeV/c);dN/d#eta
471  d#phi",Nx,x1,x2,y1,y2,0,0);
472  bookProfile(hdNdEtadPhi_caloJet_Away500_,"hdNdEtadPhi_caloJet_Away500",
473  "Average number of tracks (pT > 500 MeV) in away region vs
474  leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
475  */
476 
478  "hdNdEtadPhi_trackJet_Toward500",
479  "Average number of tracks (pT > 500 MeV) in toward region vs "
480  "leading track jet pT;pT(GeV/c);dN/d#eta d#phi",
481  Nx, x1, x2, y1, y2);
483  "hdNdEtadPhi_trackJet_Transverse500",
484  "Average number of tracks (pT > 500 MeV) in transverse region "
485  "vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",
486  Nx, x1, x2, y1, y2, 0, 0);
487  bookProfile(hdNdEtadPhi_trackJet_Away500_, "hdNdEtadPhi_trackJet_Away500",
488  "Average number of tracks (pT > 500 MeV) in away region vs "
489  "leading track jet pT;pT(GeV/c);dN/d#eta d#phi",
490  Nx, x1, x2, y1, y2, 0, 0);
491 
493  "hpTSumdEtadPhi_pTMax_Toward500",
494  "Average number of tracks (pT > 500 MeV) in toward region vs "
495  "leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",
496  Nx, x1, x2, y1, y2, 0, 0);
498  "hpTSumdEtadPhi_pTMax_Transverse500",
499  "Average number of tracks (pT > 500 MeV) in transverse region "
500  "vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",
501  Nx, x1, x2, y1, y2, 0, 0);
502  bookProfile(hpTSumdEtadPhi_pTMax_Away500_, "hpTSumdEtadPhi_pTMax_Away500",
503  "Average number of tracks (pT > 500 MeV) in away region vs "
504  "leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",
505  Nx, x1, x2, y1, y2, 0, 0);
506  /*
507  bookProfile(hpTSumdEtadPhi_caloJet_Toward500_,"hpTSumdEtadPhi_caloJet_Toward500",
508  "Average number of tracks (pT > 500 MeV) in toward region
509  vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
510  bookProfile(hpTSumdEtadPhi_caloJet_Transverse500_,"hpTSumdEtadPhi_caloJet_Transverse500",
511  "Average number of tracks (pT > 500 MeV) in transverse
512  region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta
513  d#phi",Nx,x1,x2,y1,y2,0,0);
514  bookProfile(hpTSumdEtadPhi_caloJet_Away500_,"hpTSumdEtadPhi_caloJet_Away500",
515  "Average number of tracks (pT > 500 MeV) in away region vs
516  leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
517  */
518 
520  "hpTSumdEtadPhi_trackJet_Toward500",
521  "Average number of tracks (pT > 500 MeV) in toward region vs "
522  "leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",
523  Nx, x1, x2, y1, y2, 0, 0);
525  "hpTSumdEtadPhi_trackJet_Transverse500",
526  "Average number of tracks (pT > 500 MeV) in transverse region "
527  "vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",
528  Nx, x1, x2, y1, y2, 0, 0);
530  "hpTSumdEtadPhi_trackJet_Away500",
531  "Average number of tracks (pT > 500 MeV) in away region vs "
532  "leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",
533  Nx, x1, x2, y1, y2, 0, 0);
534 
535  bookProfile(hdNdEtadPhi_pTMax_Toward900_, "hdNdEtadPhi_pTMax_Toward900",
536  "Average number of tracks (pT > 900 MeV) in toward region vs "
537  "leading track pT;pT(GeV/c);dN/d#eta d#phi",
538  Nx, x1, x2, y1, y2, 0, 0);
540  "hdNdEtadPhi_pTMax_Transverse900",
541  "Average number of tracks (pT > 900 MeV) in transverse region "
542  "vs leading track pT;pT(GeV/c);dN/d#eta d#phi",
543  Nx, x1, x2, y1, y2, 0, 0);
544  bookProfile(hdNdEtadPhi_pTMax_Away900_, "hdNdEtadPhi_pTMax_Away900",
545  "Average number of tracks (pT > 900 MeV) in away region vs "
546  "leading track pT;pT(GeV/c);dN/d#eta d#phi",
547  Nx, x1, x2, y1, y2, 0, 0);
548  /*
549  bookProfile(hdNdEtadPhi_caloJet_Toward900_,"hdNdEtadPhi_caloJet_Toward900",
550  "Average number of tracks (pT > 900 MeV) in toward region
551  vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
552  bookProfile(hdNdEtadPhi_caloJet_Transverse900_,"hdNdEtadPhi_caloJet_Transverse900",
553  "Average number of tracks (pT > 900 MeV) in transverse
554  region vs leading calo jet pT;pT(GeV/c);dN/d#eta
555  d#phi",Nx,x1,x2,y1,y2,0,0);
556  bookProfile(hdNdEtadPhi_caloJet_Away900_,"hdNdEtadPhi_caloJet_Away900",
557  "Average number of tracks (pT > 900 MeV) in away region vs
558  leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
559  */
560 
562  "hdNdEtadPhi_trackJet_Toward900",
563  "Average number of tracks (pT > 900 MeV) in toward region vs "
564  "leading track jet pT;pT(GeV/c);dN/d#eta d#phi",
565  Nx, x1, x2, y1, y2);
567  "hdNdEtadPhi_trackJet_Transverse900",
568  "Average number of tracks (pT > 900 MeV) in transverse region "
569  "vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",
570  Nx, x1, x2, y1, y2, 0, 0);
571  bookProfile(hdNdEtadPhi_trackJet_Away900_, "hdNdEtadPhi_trackJet_Away900",
572  "Average number of tracks (pT > 900 MeV) in away region vs "
573  "leading track jet pT;pT(GeV/c);dN/d#eta d#phi",
574  Nx, x1, x2, y1, y2, 0, 0);
575 
577  "hpTSumdEtadPhi_pTMax_Toward900",
578  "Average number of tracks (pT > 900 MeV) in toward region vs "
579  "leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",
580  Nx, x1, x2, y1, y2, 0, 0);
582  "hpTSumdEtadPhi_pTMax_Transverse900",
583  "Average number of tracks (pT > 900 MeV) in transverse region "
584  "vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",
585  Nx, x1, x2, y1, y2, 0, 0);
586  bookProfile(hpTSumdEtadPhi_pTMax_Away900_, "hpTSumdEtadPhi_pTMax_Away900",
587  "Average number of tracks (pT > 900 MeV) in away region vs "
588  "leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",
589  Nx, x1, x2, y1, y2, 0, 0);
590  /*
591  bookProfile(hpTSumdEtadPhi_caloJet_Toward900_,"hpTSumdEtadPhi_caloJet_Toward900",
592  "Average number of tracks (pT > 900 MeV) in toward region
593  vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
594  bookProfile(hpTSumdEtadPhi_caloJet_Transverse900_,"hpTSumdEtadPhi_caloJet_Transverse900",
595  "Average number of tracks (pT > 900 MeV) in transverse
596  region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta
597  d#phi",Nx,x1,x2,y1,y2,0,0);
598  bookProfile(hpTSumdEtadPhi_caloJet_Away900_,"hpTSumdEtadPhi_caloJet_Away900",
599  "Average number of tracks (pT > 900 MeV) in away region vs
600  leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
601  */
603  "hpTSumdEtadPhi_trackJet_Toward900",
604  "Average number of tracks (pT > 900 MeV) in toward region vs "
605  "leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",
606  Nx, x1, x2, y1, y2, 0, 0);
608  "hpTSumdEtadPhi_trackJet_Transverse900",
609  "Average number of tracks (pT > 900 MeV) in transverse region "
610  "vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",
611  Nx, x1, x2, y1, y2, 0, 0);
613  "hpTSumdEtadPhi_trackJet_Away900",
614  "Average number of tracks (pT > 900 MeV) in away region vs "
615  "leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",
616  Nx, x1, x2, y1, y2, 0, 0);
617  }
618 
619  if (1) {
620  const int Nx = 20;
621  const double x1 = 0.0;
622  const double x2 = 20.0;
623 
624  book1D(hChargedJetMulti_, "hChargedJetMulti",
625  "Charged jet multiplicity;multiplicities", Nx, x1, x2);
626  // book1D(hCaloJetMulti_,"hCaloJetMulti","Calo jet
627  // multiplicity;multiplicities",Nx,x1,x2);
628  }
629 
630  if (1) {
631  const int Nx = 60;
632  const double x1 = -180.0;
633  const double x2 = 180.0;
634 
635  book1D(hdPhi_maxpTTrack_tracks_, "hdPhi_maxpTTrack_tracks",
636  "delta phi between leading tracks and other "
637  "tracks;#Delta#phi(leading track-track)",
638  Nx, x1, x2);
639  // book1D(hdPhi_caloJet_tracks_,"hdPhi_caloJet_tracks","delta phi
640  // between leading calo jet and tracks;#Delta#phi(leading calo
641  // jet-track)",Nx,x1,x2);
642  book1D(hdPhi_chargedJet_tracks_, "hdPhi_chargedJet_tracks",
643  "delta phi between leading charged jet and "
644  "tracks;#Delta#phi(leading charged jet-track)",
645  Nx, x1, x2);
646  }
647 }
648 
649 //--------------------------------------------------------------------------------------------------
650 void QcdUeDQM::endJob(void) {}
651 
652 //--------------------------------------------------------------------------------------------------
653 
655  const EventSetup &iSetup) {
656  if (!isHltConfigSuccessful_) return;
657 
658  // Update various histograms.
659 
660  // repSummary_->Fill(1.);
661  // repSumMap_->Fill(0.5,0.5,1.);
662 }
663 
664 //--------------------------------------------------------------------------------------------------
665 
666 void QcdUeDQM::endRun(const Run &, const EventSetup &) {
667  if (!isHltConfigSuccessful_) return;
668 
669  // End run, cleanup. TODO: can this be called several times in DQM???
670 }
671 
672 //--------------------------------------------------------------------------------------------------
673 void QcdUeDQM::fill1D(std::vector<TH1F *> &hs, double val, double w) {
674  // Loop over histograms and fill if trigger has fired.
675 
676  for (size_t i = 0; i < hs.size(); ++i) {
677  if (!hltTrgDeci_.at(i)) continue;
678  hs.at(i)->Fill(val, w);
679  }
680 }
681 
682 //--------------------------------------------------------------------------------------------------
683 void QcdUeDQM::fill1D(std::vector<MonitorElement *> &mes, double val,
684  double w) {
685  // Loop over histograms and fill if trigger has fired.
686 
687  for (size_t i = 0; i < mes.size(); ++i) {
688  if (!hltTrgDeci_.at(i)) continue;
689  mes.at(i)->Fill(val, w);
690  }
691 }
692 
693 //--------------------------------------------------------------------------------------------------
694 void QcdUeDQM::setLabel1D(std::vector<MonitorElement *> &mes) {
695  // Loop over histograms and fill if trigger has fired.
696  string cut[5] = {"Nevt", "vtx!=bmspt", "Zvtx<10cm",
697  "pT>1GeV", "trackFromVtx"};
698  for (size_t i = 0; i < mes.size(); ++i) {
699  if (!hltTrgDeci_.at(i)) continue;
700  for (size_t j = 1; j < 6; j++) mes.at(i)->setBinLabel(j, cut[j - 1], 1);
701  }
702 }
703 
704 //--------------------------------------------------------------------------------------------------
705 void QcdUeDQM::fill2D(std::vector<TH2F *> &hs, double valx, double valy,
706  double w) {
707  // Loop over histograms and fill if trigger has fired.
708 
709  for (size_t i = 0; i < hs.size(); ++i) {
710  if (!hltTrgDeci_.at(i)) continue;
711  hs.at(i)->Fill(valx, valy, w);
712  }
713 }
714 
715 //--------------------------------------------------------------------------------------------------
716 void QcdUeDQM::fill2D(std::vector<MonitorElement *> &mes, double valx,
717  double valy, double w) {
718  // Loop over histograms and fill if trigger has fired.
719 
720  for (size_t i = 0; i < mes.size(); ++i) {
721  if (!hltTrgDeci_.at(i)) continue;
722  mes.at(i)->Fill(valx, valy, w);
723  }
724 }
725 //--------------------------------------------------------------------------------------------------
726 void QcdUeDQM::fillProfile(std::vector<TProfile *> &hs, double valx,
727  double valy, double w) {
728  // Loop over histograms and fill if trigger has fired.
729 
730  for (size_t i = 0; i < hs.size(); ++i) {
731  if (!hltTrgDeci_.at(i)) continue;
732  hs.at(i)->Fill(valx, valy, w);
733  }
734 }
735 
736 //--------------------------------------------------------------------------------------------------
737 void QcdUeDQM::fillProfile(std::vector<MonitorElement *> &mes, double valx,
738  double valy, double w) {
739  // Loop over histograms and fill if trigger has fired.
740 
741  for (size_t i = 0; i < mes.size(); ++i) {
742  if (!hltTrgDeci_.at(i)) continue;
743  const double y = valy * w;
744  mes.at(i)->Fill(valx, y);
745  }
746 }
747 
748 //--------------------------------------------------------------------------------------------------
750  const reco::Vertex &vtx, int sizevtx) {
751  bool goodTrk = false;
752 
753  if (sizevtx != 1) return 0; // selection events with only a vertex
754 
755  // Fill basic information of all the tracks
758 
762 
763  fill1D(hRatioPtErrorPt_, (trk.ptError() / trk.pt()));
764  fill1D(hTrkPt_, trk.pt());
765  fill1D(hTrkEta_, trk.eta());
766  fill1D(hTrkPhi_, trk.phi());
767  fill1D(hRatioDxySigmaDxyBS_, (trk.dxy(bs->position()) / trk.dxyError()));
768  fill1D(hRatioDxySigmaDxyPV_, (trk.dxy(vtx.position()) / trk.dxyError()));
769  fill1D(hRatioDzSigmaDzBS_, (trk.dz(bs->position()) / trk.dzError()));
770  fill1D(hRatioDzSigmaDzPV_, (trk.dz(vtx.position()) / trk.dzError()));
772  fill1D(hTrkNdof_, trk.ndof());
773 
774  fill1D(hBeamSpot_x_, bs->x0());
775  fill1D(hBeamSpot_y_, bs->y0());
776  fill1D(hBeamSpot_z_, bs->z0());
777 
778  // number of layers
779  bool layerMinCutbool =
783 
784  // number of pixel layers
785  bool pxlLayerMinCutbool =
787 
788  // cut on the hits in pixel layers
789  bool hasPIX1 = false;
790  if (requirePIX1_) {
791  const reco::HitPattern &p = trk.hitPattern();
792  for (int i = 0; i < p.numberOfHits(reco::HitPattern::TRACK_HITS); i++) {
796  reco::HitPattern::getLayer(hit) == 1) {
797  hasPIX1 = true;
798  break;
799  }
800  }
801  } else {
802  hasPIX1 = true;
803  }
804 
805  // cut on the pT error
806  bool ptErrorbool =
807  (trk.ptError() / trk.pt() < ptErr_pt_ ||
810 
811  // quality cut
812  bool quality_ok = true;
813  if (quality_.size() != 0) {
814  quality_ok = false;
815  for (unsigned int i = 0; i < quality_.size(); ++i) {
816  if (trk.quality(quality_[i])) {
817  quality_ok = true;
818  break;
819  }
820  }
821  }
822  //-----
823  bool algo_ok = true;
824  if (algorithm_.size() != 0) {
825  if (std::find(algorithm_.begin(), algorithm_.end(), trk.algo()) ==
826  algorithm_.end())
827  algo_ok = false;
828  }
829 
830  if (bsuse_ == 1) {
831  if (hasPIX1 && pxlLayerMinCutbool && layerMinCutbool &&
834  min3DHit_ &&
835  ptErrorbool && fabs(trk.pt()) >= ptMin_ && trk.eta() >= minRapidity_ &&
836  trk.eta() <= maxRapidity_ &&
837  fabs(trk.dxy(bs->position()) / trk.dxyError()) < tip_ &&
838  fabs(trk.dz(bs->position()) / trk.dzError()) < lip_ &&
839  trk.normalizedChi2() <= maxChi2_ && quality_ok && algo_ok) {
840  goodTrk = true;
841  }
842  }
843 
844  if (bsuse_ == 0) {
845  if (hasPIX1 && pxlLayerMinCutbool && layerMinCutbool &&
848  min3DHit_ &&
849  ptErrorbool && fabs(trk.pt()) >= ptMin_ && trk.eta() >= minRapidity_ &&
850  trk.eta() <= maxRapidity_ &&
851  fabs(trk.dxy(vtx.position()) / trk.dxyError()) < tip_ &&
852  fabs(trk.dz(vtx.position()) / trk.dzError()) < lip_ &&
853  trk.normalizedChi2() <= maxChi2_ && quality_ok && algo_ok) {
854  goodTrk = true;
855  }
856  }
857 
858  return goodTrk;
859 }
860 
861 //--------------------------------------------------------------------------------------------------
863  const edm::Handle<reco::VertexCollection> vtxColl) {
864  const reco::VertexCollection theVertices = *(vtxColl.product());
865  bool goodVtx = false;
866  fill1D(hNvertices_, theVertices.size());
867  for (reco::VertexCollection::const_iterator vertexIt = theVertices.begin();
868  vertexIt != theVertices.end(); ++vertexIt) {
869  fill1D(hVertex_z_, vertexIt->z());
870  fill1D(hVertex_y_, vertexIt->y());
871  fill1D(hVertex_x_, vertexIt->x());
872  fill1D(hVertex_ndof_, vertexIt->ndof());
873  fill1D(hVertex_rho_, vertexIt->position().rho());
874  fill1D(hVertex_z_bs_, (vertexIt->z() - bs->z0()));
875 
876  if (fabs(vertexIt->z() - bs->z0()) < diffvtxbs_ && vertexIt->ndof() >= 4 &&
877  vertexIt->position().rho() <= 2.0) {
878  goodVtx = true;
879  vtx1 = (*vertexIt);
880 
881  break;
882  }
883  } // Loop over vertcies
884  return goodVtx;
885 }
886 //--------------------------------------------------------------------------------------------------
887 void QcdUeDQM::fillpTMaxRelated(const std::vector<const reco::Track *> &track) {
888  fill1D(hNgoodTrk_, track.size());
889  if (track.size() > 0) {
890  fill1D(hLeadingTrack_pTSpectrum_, track[0]->pt());
891  fill1D(hLeadingTrack_phiSpectrum_, track[0]->phi());
892  fill1D(hLeadingTrack_etaSpectrum_, track[0]->eta());
893  }
894  for (size_t i = 0; i < track.size(); i++) {
895  fill1D(hGoodTrkPt500_, track[i]->pt());
896  fill1D(hGoodTrkEta500_, track[i]->eta());
897  fill1D(hGoodTrkPhi500_, track[i]->phi());
898  if (track[i]->pt() > 0.9) {
899  fill1D(hGoodTrkPt900_, track[i]->pt());
900  fill1D(hGoodTrkEta900_, track[i]->eta());
901  fill1D(hGoodTrkPhi900_, track[i]->phi());
902  }
903  }
904 }
905 
907  const edm::Handle<reco::TrackJetCollection> trackJets) {
908  fill1D(hChargedJetMulti_, trackJets->size());
909  for (reco::TrackJetCollection::const_iterator f = trackJets->begin();
910  f != trackJets->end(); f++) {
911  if (f != trackJets->begin()) continue;
915  }
916 }
917 
918 /*
919 void QcdUeDQM::fillCaloJetSpectra(const edm::Handle<reco::CaloJetCollection>
920 caloJets)
921 {
922  fill1D(hCaloJetMulti_,caloJets->size());
923  for( reco::CaloJetCollection::const_iterator f = caloJets->begin(); f !=
924 caloJets->end(); f++)
925  {
926  if(f != caloJets->begin())continue;
927  fill1D(hLeadingCaloJet_pTSpectrum_,f->pt());
928  fill1D(hLeadingCaloJet_etaSpectrum_,f->eta());
929  fill1D(hLeadingCaloJet_phiSpectrum_,f->phi());
930  }
931 
932 }
933 
934 
935 */
936 
937 /*
938  weight for transverse/toward/away region = 0.12
939 
940 
941 */
942 
944  const std::vector<const reco::Track *> &track) {
945  double w = 0.119;
946  // double w = 1.;
947  double nTrk500_TransReg = 0;
948  double nTrk500_AwayReg = 0;
949  double nTrk500_TowardReg = 0;
950 
951  double pTSum500_TransReg = 0;
952  double pTSum500_AwayReg = 0;
953  double pTSum500_TowardReg = 0;
954 
955  double nTrk900_TransReg = 0;
956  double nTrk900_AwayReg = 0;
957  double nTrk900_TowardReg = 0;
958 
959  double pTSum900_TransReg = 0;
960  double pTSum900_AwayReg = 0;
961  double pTSum900_TowardReg = 0;
962  if (track.size() > 0) {
963  if (track[0]->pt() > 1.) {
964  for (size_t i = 1; i < track.size(); i++) {
965 
966  double dphi =
967  (180. / PI) * (deltaPhi(track[0]->phi(), track[i]->phi()));
969  if (fabs(dphi) > 60. && fabs(dphi) < 120.) {
970  pTSum500_TransReg = pTSum500_TransReg + track[i]->pt();
971  nTrk500_TransReg++;
972  if (track[i]->pt() > 0.9) {
973  pTSum900_TransReg = pTSum900_TransReg + track[i]->pt();
974  nTrk900_TransReg++;
975  }
976  }
977 
978  if (fabs(dphi) > 120. && fabs(dphi) < 180.) {
979  pTSum500_AwayReg = pTSum500_AwayReg + track[i]->pt();
980  nTrk500_AwayReg++;
981  if (track[i]->pt() > 0.9) {
982  pTSum900_AwayReg = pTSum900_AwayReg + track[i]->pt();
983  nTrk900_AwayReg++;
984  }
985  }
986 
987  if (fabs(dphi) < 60.) {
988  pTSum500_TowardReg = pTSum500_TowardReg + track[i]->pt();
989  nTrk500_TowardReg++;
990  if (track[i]->pt() > 0.9) {
991  pTSum900_TowardReg = pTSum900_TowardReg + track[i]->pt();
992  nTrk900_TowardReg++;
993  }
994  }
995  } // track loop
996  } // leading track
997  // non empty collection
998  fillProfile(hdNdEtadPhi_pTMax_Toward500_, track[0]->pt(), nTrk500_TowardReg,
999  w);
1001  nTrk500_TransReg, w);
1002  fillProfile(hdNdEtadPhi_pTMax_Away500_, track[0]->pt(), nTrk500_AwayReg, w);
1003 
1005  pTSum500_TowardReg, w);
1007  pTSum500_TransReg, w);
1008  fillProfile(hpTSumdEtadPhi_pTMax_Away500_, track[0]->pt(), pTSum500_AwayReg,
1009  w);
1010 
1011  fillProfile(hdNdEtadPhi_pTMax_Toward900_, track[0]->pt(), nTrk900_TowardReg,
1012  w);
1014  nTrk900_TransReg, w);
1015  fillProfile(hdNdEtadPhi_pTMax_Away900_, track[0]->pt(), nTrk900_AwayReg, w);
1016 
1018  pTSum900_TowardReg, w);
1020  pTSum900_TransReg, w);
1021  fillProfile(hpTSumdEtadPhi_pTMax_Away900_, track[0]->pt(), pTSum900_AwayReg,
1022  w);
1023  }
1024 }
1025 
1027  const std::vector<const reco::Track *> &track,
1028  const edm::Handle<reco::TrackJetCollection> &trackJets) {
1029  double w = 0.119;
1030  double nTrk500_TransReg = 0;
1031  double nTrk500_AwayReg = 0;
1032  double nTrk500_TowardReg = 0;
1033 
1034  double pTSum500_TransReg = 0;
1035  double pTSum500_AwayReg = 0;
1036  double pTSum500_TowardReg = 0;
1037 
1038  double nTrk900_TransReg = 0;
1039  double nTrk900_AwayReg = 0;
1040  double nTrk900_TowardReg = 0;
1041 
1042  double pTSum900_TransReg = 0;
1043  double pTSum900_AwayReg = 0;
1044  double pTSum900_TowardReg = 0;
1045 
1046  if (!(trackJets->empty()) && (trackJets->begin())->pt() > 1.) {
1047  double jetPhi = (trackJets->begin())->phi();
1048  for (size_t i = 0; i < track.size(); i++) {
1049  double dphi = (180. / PI) * (deltaPhi(jetPhi, track[i]->phi()));
1051  if (fabs(dphi) > 60. && fabs(dphi) < 120.) {
1052  pTSum500_TransReg = pTSum500_TransReg + track[i]->pt();
1053  nTrk500_TransReg++;
1054  if (track[i]->pt() > 0.9) {
1055  pTSum900_TransReg = pTSum900_TransReg + track[i]->pt();
1056  nTrk900_TransReg++;
1057  }
1058  }
1059 
1060  if (fabs(dphi) > 120. && fabs(dphi) < 180.) {
1061  pTSum500_AwayReg = pTSum500_AwayReg + track[i]->pt();
1062  nTrk500_AwayReg++;
1063  if (track[i]->pt() > 0.9) {
1064  pTSum900_AwayReg = pTSum900_AwayReg + track[i]->pt();
1065  nTrk900_AwayReg++;
1066  }
1067  }
1068  if (fabs(dphi) < 60.) {
1069  pTSum500_TowardReg = pTSum500_TowardReg + track[i]->pt();
1070  nTrk500_TowardReg++;
1071  if (track[i]->pt() > 0.9) {
1072  pTSum900_TowardReg = pTSum900_TowardReg + track[i]->pt();
1073  nTrk900_TowardReg++;
1074  }
1075  }
1076  } // tracks loop
1077 
1078  } // leading track jet
1079 
1080  fillProfile(hdNdEtadPhi_trackJet_Toward500_, (trackJets->begin())->pt(),
1081  nTrk500_TowardReg, w);
1082  fillProfile(hdNdEtadPhi_trackJet_Transverse500_, (trackJets->begin())->pt(),
1083  nTrk500_TransReg, w);
1084  fillProfile(hdNdEtadPhi_trackJet_Away500_, (trackJets->begin())->pt(),
1085  nTrk500_AwayReg, w);
1086 
1087  fillProfile(hpTSumdEtadPhi_trackJet_Toward500_, (trackJets->begin())->pt(),
1088  pTSum500_TowardReg, w);
1090  (trackJets->begin())->pt(), pTSum500_TransReg, w);
1091  fillProfile(hpTSumdEtadPhi_trackJet_Away500_, (trackJets->begin())->pt(),
1092  pTSum500_AwayReg, w);
1093 
1094  fillProfile(hdNdEtadPhi_trackJet_Toward900_, (trackJets->begin())->pt(),
1095  nTrk900_TowardReg, w);
1096  fillProfile(hdNdEtadPhi_trackJet_Transverse900_, (trackJets->begin())->pt(),
1097  nTrk900_TransReg, w);
1098  fillProfile(hdNdEtadPhi_trackJet_Away900_, (trackJets->begin())->pt(),
1099  nTrk900_AwayReg, w);
1100 
1101  fillProfile(hpTSumdEtadPhi_trackJet_Toward900_, (trackJets->begin())->pt(),
1102  pTSum900_TowardReg, w);
1104  (trackJets->begin())->pt(), pTSum900_TransReg, w);
1105  fillProfile(hpTSumdEtadPhi_trackJet_Away900_, (trackJets->begin())->pt(),
1106  pTSum900_AwayReg, w);
1107 }
1108 
1109 /*
1110 void QcdUeDQM:: fillUE_with_CaloJets(const std::vector<const reco::Track *>
1111 &track, const edm::Handle<reco::CaloJetCollection> &caloJets)
1112 {
1113 double w = 0.119;
1114 double nTrk500_TransReg = 0;
1115 double nTrk500_AwayReg = 0;
1116 double nTrk500_TowardReg = 0;
1117 
1118 double pTSum500_TransReg = 0;
1119 double pTSum500_AwayReg = 0;
1120 double pTSum500_TowardReg = 0;
1121 
1122 double nTrk900_TransReg = 0;
1123 double nTrk900_AwayReg = 0;
1124 double nTrk900_TowardReg = 0;
1125 
1126 double pTSum900_TransReg = 0;
1127 double pTSum900_AwayReg = 0;
1128 double pTSum900_TowardReg = 0;
1129  if(!(caloJets->empty()) && (caloJets->begin())->pt() > 1.)
1130  {
1131  double jetPhi = (caloJets->begin())->phi();
1132  for(size_t i = 0; i < track.size();i++)
1133  {
1134  double dphi =
1135 (180./PI)*(deltaPhi(jetPhi,track[i]->phi()));
1136  fill1D(hdPhi_caloJet_tracks_,dphi);
1137  if(fabs(dphi)>60. && fabs(dphi)<120.)
1138  {
1139  pTSum500_TransReg = pTSum500_TransReg +
1140 track[i]->pt();
1141  nTrk500_TransReg++;
1142  if(track[i]->pt() > 0.9)
1143  {
1144  pTSum900_TransReg = pTSum900_TransReg +
1145 track[i]->pt();
1146  nTrk900_TransReg++;
1147  }
1148  }
1149  if(fabs(dphi)>120. && fabs(dphi)<180.)
1150  {
1151  pTSum500_AwayReg = pTSum500_AwayReg +
1152 track[i]->pt();
1153  nTrk500_AwayReg++;
1154  if(track[i]->pt() > 0.9)
1155  {
1156  pTSum900_AwayReg = pTSum900_AwayReg +
1157 track[i]->pt();
1158  nTrk900_AwayReg++;
1159  }
1160  }
1161  if(fabs(dphi)<60.)
1162  {
1163  pTSum500_TowardReg = pTSum500_TowardReg +
1164 track[i]->pt();
1165  nTrk500_TowardReg++;
1166  if(track[i]->pt() > 0.9)
1167  {
1168  pTSum900_TowardReg = pTSum900_TowardReg +
1169 track[i]->pt();
1170  nTrk900_TowardReg++;
1171  }
1172  }
1173  }// tracks loop
1174 
1175  }// leading calo jet
1176  fillProfile(hdNdEtadPhi_caloJet_Toward500_,
1177 (caloJets->begin())->pt(),nTrk500_TowardReg,w);
1178  fillProfile(hdNdEtadPhi_caloJet_Transverse500_,
1179 (caloJets->begin())->pt(),nTrk500_TransReg,w);
1180  fillProfile(hdNdEtadPhi_caloJet_Away500_,
1181 (caloJets->begin())->pt(),nTrk500_AwayReg,w);
1182 
1183  fillProfile(hpTSumdEtadPhi_caloJet_Toward500_,
1184 (caloJets->begin())->pt(),pTSum500_TowardReg,w);
1185  fillProfile(hpTSumdEtadPhi_caloJet_Transverse500_,
1186 (caloJets->begin())->pt(),pTSum500_TransReg,w);
1187  fillProfile(hpTSumdEtadPhi_caloJet_Away500_,
1188 (caloJets->begin())->pt(),pTSum500_AwayReg,w);
1189 
1190  fillProfile(hdNdEtadPhi_caloJet_Toward900_,
1191 (caloJets->begin())->pt(),nTrk900_TowardReg,w);
1192  fillProfile(hdNdEtadPhi_caloJet_Transverse900_,
1193 (caloJets->begin())->pt(),nTrk900_TransReg,w);
1194  fillProfile(hdNdEtadPhi_caloJet_Away900_,
1195 (caloJets->begin())->pt(),nTrk900_AwayReg,w);
1196 
1197  fillProfile(hpTSumdEtadPhi_caloJet_Toward900_,
1198 (caloJets->begin())->pt(),pTSum900_TowardReg,w);
1199  fillProfile(hpTSumdEtadPhi_caloJet_Transverse900_,
1200 (caloJets->begin())->pt(),pTSum900_TransReg,w);
1201  fillProfile(hpTSumdEtadPhi_caloJet_Away900_,
1202 (caloJets->begin())->pt(),pTSum900_AwayReg,w);
1203 
1204 
1205 }
1206 
1207 */
1208 void QcdUeDQM::fillHltBits(const Event &iEvent, const EventSetup &iSetup) {
1209  // Fill HLT trigger bits.
1210 
1211  Handle<TriggerResults> triggerResultsHLT;
1212  getProduct(hltUsedResName_, triggerResultsHLT, iEvent);
1213 
1214  /* const unsigned int ntrigs(triggerResultsHLT.product()->size());
1215  if( ntrigs != 0 ) {
1216  const edm::TriggerNames & triggerNames =
1217  iEvent.triggerNames(*triggerResultsHLT);
1218  for (unsigned int j=0; j!=ntrigs; j++) {
1219  // if(triggerResultsHLT->accept(j)){
1220  // unsigned int hlt_prescale = hltConfig_.prescaleValue(iEvent, iSetup,
1221  triggerName);
1222  cout<<"trigger fired"<<triggerNames.triggerName(j)<<endl;
1223  for(unsigned int itrigName = 0; itrigName < hltTrgNames_.size();
1224  itrigName++ ) {
1225  unsigned int hlt_prescale = hltConfig.prescaleValue(iEvent, iSetup,
1226  hltTrgNames_[itrigName]);
1227 
1228  if(triggerNames.triggerIndex(hltTrgNames_[itrigName]) >= (unsigned
1229  int)ntrigs ) continue;
1230  // if(
1231  triggerResultsHLT->accept(triggerNames.triggerIndex(hltTrgNames_[itrigName]))
1232  )cout<<hltTrgNames_[itrigName]<<endl;
1233 
1234  }
1235  }
1236  }
1237  // }
1238  */
1239  for (size_t i = 0; i < hltTrgBits_.size(); ++i) {
1240  if (hltTrgBits_.at(i) < 0) continue; // ignore unknown trigger
1241  size_t tbit = hltTrgBits_.at(i);
1242  if (tbit < triggerResultsHLT->size()) {
1243  hltTrgDeci_[i] = triggerResultsHLT->accept(tbit);
1244  }
1245  }
1246  // fill correlation histogram
1247  for (size_t i = 0; i < hltTrgBits_.size(); ++i) {
1248  if (hltTrgDeci_.at(i)) h2TrigCorr_->Fill(i, i);
1249  for (size_t j = i + 1; j < hltTrgBits_.size(); ++j) {
1250  if (hltTrgDeci_.at(i) && hltTrgDeci_.at(j)) h2TrigCorr_->Fill(i, j);
1251  if (hltTrgDeci_.at(i) && !hltTrgDeci_.at(j)) h2TrigCorr_->Fill(j, i);
1252  }
1253  }
1254 }
1255 
1256 //--------------------------------------------------------------------------------------------------
1257 
1258 // Local Variables:
1259 // show-trailing-whitespace: t
1260 // truncate-lines: t
1261 // End:
unsigned int size() const
number of trigger paths in trigger table
bool bsuse_
Definition: QcdUeDQM.h:417
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Toward900_
Definition: QcdUeDQM.h:338
void endLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:654
T getParameter(std::string const &) const
double z0() const
z coordinate
Definition: BeamSpot.h:68
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
static uint32_t getLayer(uint16_t pattern)
Definition: HitPattern.h:624
dictionary parameters
Definition: Parameters.py:2
void getProduct(const std::string name, edm::Handle< TYPE > &prod, const edm::Event &event) const
Definition: QcdUeDQM.h:434
static bool pixelHitFilter(uint16_t pattern)
Definition: HitPattern.h:505
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Transverse900_
Definition: QcdUeDQM.h:392
void fillHltBits(const edm::Event &iEvent, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:1208
const std::string & triggerName(unsigned int triggerIndex) const
const double w
Definition: UKUtility.cc:23
#define PI
void fill1D(std::vector< TH1F * > &hs, double val, double w=1.)
Definition: QcdUeDQM.cc:673
bool trackSelection(const reco::Track &trk, const reco::BeamSpot *bs, const reco::Vertex &vtx, int sizevtx)
Definition: QcdUeDQM.cc:749
double normalizedChi2() const
chi-squared divided by n.d.o.f. (or chi-squared * 1e6 if n.d.o.f. is zero)
Definition: TrackBase.h:609
std::vector< MonitorElement * > hTrkNdof_
Definition: QcdUeDQM.h:166
std::vector< MonitorElement * > hGoodTrkPhi500_
Definition: QcdUeDQM.h:157
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:446
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Transverse500_
Definition: QcdUeDQM.h:230
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Away900_
Definition: QcdUeDQM.h:367
std::vector< MonitorElement * > hLeadingChargedJet_phiSpectrum_
Definition: QcdUeDQM.h:219
double dxyError() const
error on dxy
Definition: TrackBase.h:844
virtual ~QcdUeDQM()
Definition: QcdUeDQM.cc:115
std::vector< MonitorElement * > hTrkChi2_
Definition: QcdUeDQM.h:165
void beginJob(void)
Definition: QcdUeDQM.cc:176
std::vector< MonitorElement * > hVertex_z_bs_
Definition: QcdUeDQM.h:174
std::vector< MonitorElement * > hGoodTrkEta900_
Definition: QcdUeDQM.h:159
void createHistos()
Definition: QcdUeDQM.cc:323
std::vector< MonitorElement * > hGoodTrkPt900_
Definition: QcdUeDQM.h:158
std::string hltUsedResName_
Definition: QcdUeDQM.h:138
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Away500_
Definition: QcdUeDQM.h:305
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Away900_
Definition: QcdUeDQM.h:395
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:13
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::vector< std::string > hltTrgUsedNames_
Definition: QcdUeDQM.h:137
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
double phi() const
azimuthal angle of momentum vector
Definition: TrackBase.h:693
std::vector< MonitorElement * > hTrkEta_
Definition: QcdUeDQM.h:152
std::vector< Vertex > VertexCollection
collection of Vertex objects
Definition: VertexFwd.h:9
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Away500_
Definition: QcdUeDQM.h:259
edm::EDGetTokenT< reco::TrackCollection > trackLabel_
Definition: QcdUeDQM.h:422
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Transverse500_
Definition: QcdUeDQM.h:274
bool fillVtxPlots(const reco::BeamSpot *bs, const edm::Handle< reco::VertexCollection > vtxColl)
Definition: QcdUeDQM.cc:862
edm::EDGetTokenT< reco::CaloJetCollection > caloJetLabel_
Definition: QcdUeDQM.h:420
void fillProfile(std::vector< TProfile * > &hs, double valx, double valy, double w=1.)
Definition: QcdUeDQM.cc:726
void fillUE_with_ChargedJets(const std::vector< const reco::Track * > &track, const edm::Handle< reco::TrackJetCollection > &trackJets)
Definition: QcdUeDQM.cc:1026
double ptErr_pt_
Definition: QcdUeDQM.h:410
std::vector< MonitorElement * > hLeadingChargedJet_etaSpectrum_
Definition: QcdUeDQM.h:215
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Away900_
Definition: QcdUeDQM.h:327
void setLabel1D(std::vector< MonitorElement * > &mes)
Definition: QcdUeDQM.cc:694
std::vector< MonitorElement * > hLeadingTrack_etaSpectrum_
Definition: QcdUeDQM.h:182
int pixelLayersWithMeasurement() const
Definition: HitPattern.cc:458
T eta() const
void beginRun(const edm::Run &r, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:194
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
void operator()(TH3F *&h)
Definition: QcdUeDQM.cc:48
bool requirePIX1_
Definition: QcdUeDQM.h:414
int trackerLayersWithMeasurement() const
Definition: HitPattern.cc:477
const Point & position() const
position
Definition: Vertex.h:106
std::vector< MonitorElement * > hLeadingChargedJet_pTSpectrum_
Definition: QcdUeDQM.h:191
std::vector< MonitorElement * > hGoodTrkPhi900_
Definition: QcdUeDQM.h:160
bool isHltConfigSuccessful_
Definition: QcdUeDQM.h:67
void fillUE_with_MaxpTtrack(const std::vector< const reco::Track * > &track)
Definition: QcdUeDQM.cc:943
std::vector< std::string > hltTrgNames_
Definition: QcdUeDQM.h:133
edm::EDGetTokenT< reco::TrackJetCollection > chargedJetLabel_
Definition: QcdUeDQM.h:421
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Toward500_
Definition: QcdUeDQM.h:290
void Fill(long long x)
static bool validHitFilter(uint16_t pattern)
Definition: HitPattern.h:698
TrackAlgorithm algo() const
Definition: TrackBase.h:423
std::vector< MonitorElement * > hVertex_ndof_
Definition: QcdUeDQM.h:172
std::vector< MonitorElement * > hVertex_rho_
Definition: QcdUeDQM.h:173
int iEvent
Definition: GenABIO.cc:230
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:699
int numberOfValidStripLayersWithMonoAndStereo(uint16_t stripdet, uint16_t layer) const
Definition: HitPattern.cc:300
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:120
std::vector< MonitorElement * > hNtrackerLayer_
Definition: QcdUeDQM.h:147
std::vector< MonitorElement * > hRatioDzSigmaDzBS_
Definition: QcdUeDQM.h:163
std::vector< std::string > hltProcNames_
Definition: QcdUeDQM.h:132
std::string hltResName_
Definition: QcdUeDQM.h:131
void beginLuminosityBlock(const edm::LuminosityBlock &l, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:186
MonitorElement * h2TrigCorr_
Definition: QcdUeDQM.h:144
double ndof() const
number of degrees of freedom of the fit
Definition: TrackBase.h:603
std::vector< MonitorElement * > hVertex_y_
Definition: QcdUeDQM.h:170
double pt() const
track transverse momentum
Definition: TrackBase.h:669
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Toward500_
Definition: QcdUeDQM.h:266
double maxChi2_
Definition: QcdUeDQM.h:416
std::vector< int > hltTrgBits_
Definition: QcdUeDQM.h:135
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Toward900_
Definition: QcdUeDQM.h:380
double ptError() const
error on Pt (set to 1000 TeV if charge==0 for safety)
Definition: TrackBase.h:811
HLTConfigProvider hltConfig
Definition: QcdUeDQM.h:129
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Away900_
Definition: QcdUeDQM.h:349
void book2D(std::vector< MonitorElement * > &mes, const std::string &name, const std::string &title, int nx, double x1, double x2, int ny, double y1, double y2, bool sumw2=1, bool sbox=1)
Definition: QcdUeDQM.cc:280
int j
Definition: DBlmapReader.cc:9
double lip_
Definition: QcdUeDQM.h:408
TH1 * getTH1(void) const
double f[11][100]
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
reco::Vertex vtx1
Definition: QcdUeDQM.h:429
std::vector< MonitorElement * > hVertex_x_
Definition: QcdUeDQM.h:171
std::vector< MonitorElement * > hLeadingTrack_phiSpectrum_
Definition: QcdUeDQM.h:184
std::vector< MonitorElement * > hChargedJetMulti_
Definition: QcdUeDQM.h:187
std::vector< reco::TrackBase::TrackAlgorithm > algorithm_
Definition: QcdUeDQM.h:426
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Toward900_
Definition: QcdUeDQM.h:356
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Transverse900_
Definition: QcdUeDQM.h:346
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Transverse900_
Definition: QcdUeDQM.h:320
std::vector< MonitorElement * > hGoodTrkPt500_
Definition: QcdUeDQM.h:155
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Toward500_
Definition: QcdUeDQM.h:224
std::vector< MonitorElement * > hTrkPhi_
Definition: QcdUeDQM.h:153
double dz() const
dz parameter (= dsz/cos(lambda)). This is the track z0 w.r.t (0,0,0) only if the refPoint is close to...
Definition: TrackBase.h:657
double dzError() const
error on dz
Definition: TrackBase.h:862
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Toward900_
Definition: QcdUeDQM.h:314
std::vector< MonitorElement * > hdPhi_maxpTTrack_tracks_
Definition: QcdUeDQM.h:206
edm::EDGetTokenT< reco::BeamSpot > bsLabel_
Definition: QcdUeDQM.h:424
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Toward500_
Definition: QcdUeDQM.h:248
edm::EDGetTokenT< reco::VertexCollection > vtxLabel_
Definition: QcdUeDQM.h:423
std::vector< MonitorElement * > hNvertices_
Definition: QcdUeDQM.h:168
std::vector< MonitorElement * > hdNdEtadPhi_pTMax_Away500_
Definition: QcdUeDQM.h:237
static TrackQuality qualityByName(const std::string &name)
Definition: TrackBase.cc:108
std::vector< MonitorElement * > hpTSumdEtadPhi_trackJet_Transverse500_
Definition: QcdUeDQM.h:302
bool allowTriplets_
Definition: QcdUeDQM.h:418
std::vector< MonitorElement * > hNgoodTrk_
Definition: QcdUeDQM.h:154
double ptMin_
Definition: QcdUeDQM.h:404
T const * product() const
Definition: Handle.h:81
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Away500_
Definition: QcdUeDQM.h:277
const HitPattern & hitPattern() const
Access the hit pattern, indicating in which Tracker layers the track has hits.
Definition: TrackBase.h:384
tuple tracks
Definition: testEve_cfg.py:39
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d&#39;tor
std::vector< MonitorElement * > hBeamSpot_y_
Definition: QcdUeDQM.h:177
double diffvtxbs_
Definition: QcdUeDQM.h:409
double minRapidity_
Definition: QcdUeDQM.h:405
std::vector< MonitorElement * > hLeadingTrack_pTSpectrum_
Definition: QcdUeDQM.h:180
int min3DHit_
Definition: QcdUeDQM.h:415
std::vector< MonitorElement * > hRatioDxySigmaDxyBS_
Definition: QcdUeDQM.h:161
container selected_
Definition: QcdUeDQM.h:428
bool quality(const TrackQuality) const
Track quality.
Definition: TrackBase.h:551
std::vector< MonitorElement * > hRatioDxySigmaDxyPV_
Definition: QcdUeDQM.h:162
std::vector< MonitorElement * > hdPhi_chargedJet_tracks_
Definition: QcdUeDQM.h:211
std::vector< MonitorElement * > hNtrackerStripPixelLayer_
Definition: QcdUeDQM.h:149
double pxlLayerMinCut_
Definition: QcdUeDQM.h:413
void bookProfile(std::vector< MonitorElement * > &mes, const std::string &name, const std::string &title, int nx, double x1, double x2, double y1, double y2, bool sumw2=1, bool sbox=1)
Definition: QcdUeDQM.cc:306
std::vector< MonitorElement * > hNevts_
Definition: QcdUeDQM.h:146
std::vector< TrackJet > TrackJetCollection
collection of TrackJet objects
QcdUeDQM(const edm::ParameterSet &parameters)
Definition: QcdUeDQM.cc:55
std::vector< MonitorElement * > hBeamSpot_x_
Definition: QcdUeDQM.h:178
static TrackAlgorithm algoByName(const std::string &name)
Definition: TrackBase.cc:120
double y0() const
y coordinate
Definition: BeamSpot.h:66
tuple cout
Definition: gather_cfg.py:121
const Point & position() const
position
Definition: BeamSpot.h:62
std::vector< MonitorElement * > hTrkPt_
Definition: QcdUeDQM.h:151
std::vector< MonitorElement * > hGoodTrkEta500_
Definition: QcdUeDQM.h:156
void fillChargedJetSpectra(const edm::Handle< reco::TrackJetCollection > trackJets)
Definition: QcdUeDQM.cc:906
std::vector< reco::TrackBase::TrackQuality > quality_
Definition: QcdUeDQM.h:425
std::vector< MonitorElement * > hdNdEtadPhi_trackJet_Transverse500_
Definition: QcdUeDQM.h:256
DQMStore * theDbe_
Definition: QcdUeDQM.h:141
void fillpTMaxRelated(const std::vector< const reco::Track * > &track)
Definition: QcdUeDQM.cc:887
double maxRapidity_
Definition: QcdUeDQM.h:406
void fill2D(std::vector< TH2F * > &hs, double valx, double valy, double w=1.)
Definition: QcdUeDQM.cc:705
uint16_t getHitPattern(HitCategory category, int position) const
Definition: HitPattern.h:456
std::vector< MonitorElement * > hVertex_z_
Definition: QcdUeDQM.h:169
std::vector< MonitorElement * > hRatioDzSigmaDzPV_
Definition: QcdUeDQM.h:164
double dxy() const
dxy parameter. (This is the transverse impact parameter w.r.t. to (0,0,0) ONLY if refPoint is close t...
Definition: TrackBase.h:639
#define CP(level)
Definition: QcdUeDQM.cc:45
int minHit_
Definition: QcdUeDQM.h:412
std::vector< MonitorElement * > hRatioPtErrorPt_
Definition: QcdUeDQM.h:150
tuple size
Write out results.
std::vector< MonitorElement * > hNtrackerPixelLayer_
Definition: QcdUeDQM.h:148
void endRun(const edm::Run &r, const edm::EventSetup &iSetup)
Definition: QcdUeDQM.cc:666
void endJob(void)
Definition: QcdUeDQM.cc:650
std::vector< MonitorElement * > hBeamSpot_z_
Definition: QcdUeDQM.h:176
Definition: Run.h:41
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
int numberOfHits(HitCategory category) const
Definition: HitPattern.h:718
double tip_
Definition: QcdUeDQM.h:407
std::vector< MonitorElement * > hpTSumdEtadPhi_pTMax_Transverse900_
Definition: QcdUeDQM.h:364
double x0() const
x coordinate
Definition: BeamSpot.h:64
Definition: DDAxes.h:10
void book1D(std::vector< MonitorElement * > &mes, const std::string &name, const std::string &title, int nx, double x1, double x2, bool sumw2=1, bool sbox=1)
Definition: QcdUeDQM.cc:255
std::vector< bool > hltTrgDeci_
Definition: QcdUeDQM.h:136