CMS 3D CMS Logo

TotemRPDQMSource.cc
Go to the documentation of this file.
1 /****************************************************************************
2 *
3 * This is a part of TotemDQM and TOTEM offline software.
4 * Authors:
5 * Jan Kašpar (jan.kaspar@gmail.com)
6 * Rafał Leszko (rafal.leszko@gmail.com)
7 *
8 ****************************************************************************/
9 
16 
19 
28 
32 
33 #include <string>
34 
35 //----------------------------------------------------------------------------------------------------
36 
37 class TotemRPDQMSource : public DQMEDAnalyzer {
38 public:
40  ~TotemRPDQMSource() override;
41 
42 protected:
43  void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
44  void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override;
45 
46 private:
47  unsigned int verbosity;
48 
55 
57  struct PotPlots {
58  MonitorElement *vfat_problem = nullptr, *vfat_missing = nullptr, *vfat_ec_bc_error = nullptr,
59  *vfat_corruption = nullptr;
60 
61  MonitorElement *activity = nullptr, *activity_u = nullptr, *activity_v = nullptr;
64  MonitorElement *patterns_u = nullptr, *patterns_v = nullptr;
65  MonitorElement *h_planes_fit_u = nullptr, *h_planes_fit_v = nullptr;
71 
72  PotPlots() {}
73  PotPlots(DQMStore::IBooker &ibooker, unsigned int id);
74  };
75 
76  std::map<unsigned int, PotPlots> potPlots;
77 
79  struct PlanePlots {
83  MonitorElement *cluster_size = nullptr;
85 
87  PlanePlots(DQMStore::IBooker &ibooker, unsigned int id);
88  };
89 
90  std::map<unsigned int, PlanePlots> planePlots;
91 };
92 
93 //----------------------------------------------------------------------------------------------------
94 //----------------------------------------------------------------------------------------------------
95 
96 using namespace std;
97 using namespace edm;
98 
99 //----------------------------------------------------------------------------------------------------
100 
101 TotemRPDQMSource::PotPlots::PotPlots(DQMStore::IBooker &ibooker, unsigned int id) {
102  string path;
104  ibooker.setCurrentFolder(path);
105 
106  string title;
108 
109  vfat_problem = ibooker.book2D("vfats with any problem", title + ";plane;vfat index", 10, -0.5, 9.5, 4, -0.5, 3.5);
110  vfat_missing = ibooker.book2D("vfats missing", title + ";plane;vfat index", 10, -0.5, 9.5, 4, -0.5, 3.5);
111  vfat_ec_bc_error =
112  ibooker.book2D("vfats with EC or BC error", title + ";plane;vfat index", 10, -0.5, 9.5, 4, -0.5, 3.5);
113  vfat_corruption =
114  ibooker.book2D("vfats with data corruption", title + ";plane;vfat index", 10, -0.5, 9.5, 4, -0.5, 3.5);
115 
116  activity = ibooker.book1D("active planes", title + ";number of active planes", 11, -0.5, 10.5);
117  activity_u = ibooker.book1D("active planes U", title + ";number of active U planes", 11, -0.5, 10.5);
118  activity_v = ibooker.book1D("active planes V", title + ";number of active V planes", 11, -0.5, 10.5);
119 
120  activity_per_bx = ibooker.book1D("activity per BX", title + ";Event.BX", 4002, -1.5, 4000. + 0.5);
121  activity_per_bx_short = ibooker.book1D("activity per BX (short)", title + ";Event.BX", 102, -1.5, 100. + 0.5);
122 
123  hit_plane_hist =
124  ibooker.book2D("activity in planes (2D)", title + ";plane number;strip number", 10, -0.5, 9.5, 32, -0.5, 511.5);
125 
126  patterns_u = ibooker.book1D("recognized patterns U", title + ";number of recognized U patterns", 11, -0.5, 10.5);
127  patterns_v = ibooker.book1D("recognized patterns V", title + ";number of recognized V patterns", 11, -0.5, 10.5);
128 
129  h_planes_fit_u =
130  ibooker.book1D("planes contributing to fit U", title + ";number of planes contributing to U fit", 6, -0.5, 5.5);
131  h_planes_fit_v =
132  ibooker.book1D("planes contributing to fit V", title + ";number of planes contributing to V fit", 6, -0.5, 5.5);
133 
134  event_category = ibooker.book1D("event category", title + ";event category", 5, -0.5, 4.5);
135  TH1F *event_category_h = event_category->getTH1F();
136  event_category_h->GetXaxis()->SetBinLabel(1, "empty");
137  event_category_h->GetXaxis()->SetBinLabel(2, "insufficient");
138  event_category_h->GetXaxis()->SetBinLabel(3, "single-track");
139  event_category_h->GetXaxis()->SetBinLabel(4, "multi-track");
140  event_category_h->GetXaxis()->SetBinLabel(5, "shower");
141 
142  trackHitsCumulativeHist =
143  ibooker.book2D("track XY profile", title + ";x (mm);y (mm)", 100, -18., +18., 100, -18., +18.);
144 
145  track_u_profile = ibooker.book1D("track profile U", title + "; U (mm)", 512, -256 * 66E-3, +256 * 66E-3);
146  track_v_profile = ibooker.book1D("track profile V", title + "; V (mm)", 512, -256 * 66E-3, +256 * 66E-3);
147 
148  triggerSectorUVCorrelation_all = ibooker.book2D(
149  "trigger sector UV correlation (no cond)", title + ";V sector;U sector", 16, -0.5, 15.5, 16, -0.5, 15.5);
150  triggerSectorUVCorrelation_mult2 = ibooker.book2D(
151  "trigger sector UV correlation (max mult 2)", title + ";V sector;U sector", 16, -0.5, 15.5, 16, -0.5, 15.5);
152  triggerSectorUVCorrelation_track = ibooker.book2D(
153  "trigger sector UV correlation (track)", title + ";V sector;U sector", 16, -0.5, 15.5, 16, -0.5, 15.5);
154 }
155 
156 //----------------------------------------------------------------------------------------------------
157 
159  string path;
161  ibooker.setCurrentFolder(path);
162 
163  string title;
165 
166  digi_profile_cumulative = ibooker.book1D("digi profile", title + ";strip number", 512, -0.5, 511.5);
167  cluster_profile_cumulative = ibooker.book1D("cluster profile", title + ";cluster center", 1024, -0.25, 511.75);
168  hit_multiplicity = ibooker.book1D("hit multiplicity", title + ";hits/detector/event", 6, -0.5, 5.5);
169  cluster_size = ibooker.book1D("cluster size", title + ";hits per cluster", 5, 0.5, 5.5);
170 
171  efficiency_num = ibooker.book1D("efficiency num", title + ";track position (mm)", 30, -15., 0.);
172  efficiency_den = ibooker.book1D("efficiency den", title + ";track position (mm)", 30, -15., 0.);
173 }
174 
175 //----------------------------------------------------------------------------------------------------
176 //----------------------------------------------------------------------------------------------------
177 
179  : verbosity(ps.getUntrackedParameter<unsigned int>("verbosity", 0)) {
180  tokenStatus = consumes<DetSetVector<TotemVFATStatus>>(ps.getParameter<edm::InputTag>("tagStatus"));
181 
182  tokenDigi = consumes<DetSetVector<TotemRPDigi>>(ps.getParameter<edm::InputTag>("tagDigi"));
183  tokenCluster = consumes<edm::DetSetVector<TotemRPCluster>>(ps.getParameter<edm::InputTag>("tagCluster"));
184  tokenRecHit = consumes<edm::DetSetVector<TotemRPRecHit>>(ps.getParameter<edm::InputTag>("tagRecHit"));
185  tokenUVPattern = consumes<DetSetVector<TotemRPUVPattern>>(ps.getParameter<edm::InputTag>("tagUVPattern"));
186  tokenLocalTrack = consumes<DetSetVector<TotemRPLocalTrack>>(ps.getParameter<edm::InputTag>("tagLocalTrack"));
187 }
188 
189 //----------------------------------------------------------------------------------------------------
190 
192 
193 //----------------------------------------------------------------------------------------------------
194 
196  ibooker.cd();
197  ibooker.setCurrentFolder("CTPPS");
198 
199  // loop over arms
200  for (unsigned int arm : {0, 1}) {
201  // loop over RPs
202  for (unsigned int st_rp : {2, 3, 4, 5, 24, 25}) {
203  const unsigned int st = st_rp / 10;
204  const unsigned int rp = st_rp % 10;
205 
206  TotemRPDetId rpId(arm, st, rp);
207  potPlots[rpId] = PotPlots(ibooker, rpId);
208 
209  // loop over planes
210  for (unsigned int pl = 0; pl < 10; ++pl) {
211  TotemRPDetId plId(arm, st, rp, pl);
212  planePlots[plId] = PlanePlots(ibooker, plId);
213  }
214  }
215  }
216 }
217 
218 //----------------------------------------------------------------------------------------------------
219 
220 void TotemRPDQMSource::analyze(edm::Event const &event, edm::EventSetup const &eventSetup) {
221  // get event setup data
224 
225  // get event data
227  event.getByToken(tokenStatus, status);
228 
230  event.getByToken(tokenDigi, digi);
231 
233  event.getByToken(tokenCluster, digCluster);
234 
236  event.getByToken(tokenRecHit, hits);
237 
239  event.getByToken(tokenUVPattern, patterns);
240 
242  event.getByToken(tokenLocalTrack, tracks);
243 
244  // check validity
245  bool valid = true;
246  valid &= status.isValid();
247  valid &= digi.isValid();
248  valid &= digCluster.isValid();
249  valid &= hits.isValid();
250  valid &= patterns.isValid();
251  valid &= tracks.isValid();
252 
253  if (!valid) {
254  if (verbosity) {
255  LogProblem("TotemRPDQMSource")
256  << "ERROR in TotemDQMModuleRP::analyze > some of the required inputs are not valid. Skipping this event.\n"
257  << " status.isValid = " << status.isValid() << "\n"
258  << " digi.isValid = " << digi.isValid() << "\n"
259  << " digCluster.isValid = " << digCluster.isValid() << "\n"
260  << " hits.isValid = " << hits.isValid() << "\n"
261  << " patterns.isValid = " << patterns.isValid() << "\n"
262  << " tracks.isValid = " << tracks.isValid();
263  }
264 
265  return;
266  }
267 
268  //------------------------------
269  // Status Plots
270 
271  for (auto &ds : *status) {
272  TotemRPDetId detId(ds.detId());
273  unsigned int plNum = detId.plane();
274  CTPPSDetId rpId = detId.rpId();
275 
276  auto it = potPlots.find(rpId);
277  if (it == potPlots.end())
278  continue;
279  auto &plots = it->second;
280 
281  for (auto &s : ds) {
282  if (s.isMissing()) {
283  plots.vfat_problem->Fill(plNum, s.chipPosition());
284  plots.vfat_missing->Fill(plNum, s.chipPosition());
285  }
286 
287  if (s.isECProgressError() || s.isBCProgressError()) {
288  plots.vfat_problem->Fill(plNum, s.chipPosition());
289  plots.vfat_ec_bc_error->Fill(plNum, s.chipPosition());
290  }
291 
292  if (s.isIDMismatch() || s.isFootprintError() || s.isCRCError()) {
293  plots.vfat_problem->Fill(plNum, s.chipPosition());
294  plots.vfat_corruption->Fill(plNum, s.chipPosition());
295  }
296  }
297  }
298 
299  //------------------------------
300  // Plane Plots
301 
302  // digi profile cumulative
303  for (DetSetVector<TotemRPDigi>::const_iterator it = digi->begin(); it != digi->end(); ++it) {
304  TotemRPDetId detId(it->detId());
305 
306  auto plIt = planePlots.find(detId);
307  if (plIt == planePlots.end())
308  continue;
309  auto &plots = plIt->second;
310 
311  for (DetSet<TotemRPDigi>::const_iterator dit = it->begin(); dit != it->end(); ++dit)
312  plots.digi_profile_cumulative->Fill(dit->stripNumber());
313  }
314 
315  // cluster plots
316  for (DetSetVector<TotemRPCluster>::const_iterator it = digCluster->begin(); it != digCluster->end(); it++) {
317  TotemRPDetId detId(it->detId());
318 
319  auto plIt = planePlots.find(detId);
320  if (plIt == planePlots.end())
321  continue;
322  auto &plots = plIt->second;
323 
324  // hit multiplicity
325  plots.hit_multiplicity->Fill(it->size());
326 
327  for (DetSet<TotemRPCluster>::const_iterator dit = it->begin(); dit != it->end(); ++dit) {
328  // profile cumulative
329  plots.cluster_profile_cumulative->Fill(dit->centerStripPosition());
330 
331  // cluster size
332  plots.cluster_size->Fill(dit->numberOfStrips());
333  }
334  }
335 
336  // plane efficiency plots
337  for (auto &ds : *tracks) {
338  CTPPSDetId rpId(ds.detId());
339 
340  for (auto &ft : ds) {
341  if (!ft.isValid())
342  continue;
343 
344  double rp_z = geometry->rpTranslation(rpId).z();
345 
346  for (unsigned int plNum = 0; plNum < 10; ++plNum) {
347  TotemRPDetId plId = rpId;
348  plId.setPlane(plNum);
349 
350  auto plIt = planePlots.find(plId);
351  if (plIt == planePlots.end())
352  continue;
353  auto &plots = plIt->second;
354 
355  double ft_z = ft.z0();
356  double ft_x = ft.x0() + ft.tx() * (ft_z - rp_z);
357  double ft_y = ft.y0() + ft.ty() * (ft_z - rp_z);
358 
359  double ft_v = geometry->globalToLocal(plId, CTPPSGeometry::Vector(ft_x, ft_y, ft_z)).y();
360 
361  bool hasMatchingHit = false;
362  const auto &hit_ds_it = hits->find(plId);
363  if (hit_ds_it != hits->end()) {
364  for (const auto &h : *hit_ds_it) {
365  bool match = (fabs(ft_v - h.position()) < 2. * 0.066);
366  if (match) {
367  hasMatchingHit = true;
368  break;
369  }
370  }
371  }
372 
373  plots.efficiency_den->Fill(ft_v);
374  if (hasMatchingHit)
375  plots.efficiency_num->Fill(ft_v);
376  }
377  }
378  }
379 
380  //------------------------------
381  // Roman Pots Plots
382 
383  // determine active planes (from RecHits and VFATStatus)
384  map<unsigned int, set<unsigned int>> planes;
385  map<unsigned int, set<unsigned int>> planes_u;
386  map<unsigned int, set<unsigned int>> planes_v;
387  for (const auto &ds : *hits) {
388  if (ds.empty())
389  continue;
390 
391  TotemRPDetId detId(ds.detId());
392  unsigned int planeNum = detId.plane();
393  CTPPSDetId rpId = detId.rpId();
394 
395  planes[rpId].insert(planeNum);
396  if (detId.isStripsCoordinateUDirection())
397  planes_u[rpId].insert(planeNum);
398  else
399  planes_v[rpId].insert(planeNum);
400  }
401 
402  for (const auto &ds : *status) {
403  bool activity = false;
404  for (const auto &s : ds) {
405  if (s.isNumberOfClustersSpecified() && s.numberOfClusters() > 0) {
406  activity = true;
407  break;
408  }
409  }
410 
411  if (!activity)
412  continue;
413 
414  TotemRPDetId detId(ds.detId());
415  unsigned int planeNum = detId.plane();
416  CTPPSDetId rpId = detId.rpId();
417 
418  planes[rpId].insert(planeNum);
419  if (detId.isStripsCoordinateUDirection())
420  planes_u[rpId].insert(planeNum);
421  else
422  planes_v[rpId].insert(planeNum);
423  }
424 
425  // plane activity histogram
426  for (std::map<unsigned int, PotPlots>::iterator it = potPlots.begin(); it != potPlots.end(); it++) {
427  it->second.activity->Fill(planes[it->first].size());
428  it->second.activity_u->Fill(planes_u[it->first].size());
429  it->second.activity_v->Fill(planes_v[it->first].size());
430 
431  if (planes[it->first].size() >= 6) {
432  it->second.activity_per_bx->Fill(event.bunchCrossing());
433  it->second.activity_per_bx_short->Fill(event.bunchCrossing());
434  }
435  }
436 
437  for (DetSetVector<TotemRPCluster>::const_iterator it = digCluster->begin(); it != digCluster->end(); it++) {
438  TotemRPDetId detId(it->detId());
439  unsigned int planeNum = detId.plane();
440  CTPPSDetId rpId = detId.rpId();
441 
442  auto plIt = potPlots.find(rpId);
443  if (plIt == potPlots.end())
444  continue;
445  auto &plots = plIt->second;
446 
447  for (DetSet<TotemRPCluster>::const_iterator dit = it->begin(); dit != it->end(); ++dit)
448  plots.hit_plane_hist->Fill(planeNum, dit->centerStripPosition());
449  }
450 
451  // recognized pattern histograms
452  for (auto &ds : *patterns) {
453  CTPPSDetId rpId(ds.detId());
454 
455  auto plIt = potPlots.find(rpId);
456  if (plIt == potPlots.end())
457  continue;
458  auto &plots = plIt->second;
459 
460  // count U and V patterns
461  unsigned int u = 0, v = 0;
462  for (auto &p : ds) {
463  if (!p.fittable())
464  continue;
465 
466  if (p.projection() == TotemRPUVPattern::projU)
467  u++;
468 
469  if (p.projection() == TotemRPUVPattern::projV)
470  v++;
471  }
472 
473  plots.patterns_u->Fill(u);
474  plots.patterns_v->Fill(v);
475  }
476 
477  // event-category histogram
478  for (auto &it : potPlots) {
479  TotemRPDetId rpId(it.first);
480  auto &pp = it.second;
481 
482  // process hit data for this plot
483  unsigned int pl_u = planes_u[rpId].size();
484  unsigned int pl_v = planes_v[rpId].size();
485 
486  // process pattern data for this pot
487  const auto &rp_pat_it = patterns->find(rpId);
488 
489  unsigned int pat_u = 0, pat_v = 0;
490  if (rp_pat_it != patterns->end()) {
491  for (auto &p : *rp_pat_it) {
492  if (!p.fittable())
493  continue;
494 
495  if (p.projection() == TotemRPUVPattern::projU)
496  pat_u++;
497 
498  if (p.projection() == TotemRPUVPattern::projV)
499  pat_v++;
500  }
501  }
502 
503  // determine category
504  signed int category = -1;
505 
506  if (pl_u == 0 && pl_v == 0)
507  category = 0; // empty
508 
509  if (category == -1 && pat_u + pat_v <= 1) {
510  if (pl_u + pl_v < 6)
511  category = 1; // insuff
512  else
513  category = 4; // shower
514  }
515 
516  if (pat_u == 1 && pat_v == 1)
517  category = 2; // 1-track
518 
519  if (category == -1)
520  category = 3; // multi-track
521 
522  pp.event_category->Fill(category);
523  }
524 
525  // RP track-fit plots
526  set<unsigned int> rps_with_tracks;
527 
528  for (auto &ds : *tracks) {
529  CTPPSDetId rpId(ds.detId());
530 
531  rps_with_tracks.insert(rpId);
532 
533  auto plIt = potPlots.find(rpId);
534  if (plIt == potPlots.end())
535  continue;
536  auto &plots = plIt->second;
537 
538  for (auto &ft : ds) {
539  if (!ft.isValid())
540  continue;
541 
542  // number of planes contributing to (valid) fits
543  unsigned int n_pl_in_fit_u = 0, n_pl_in_fit_v = 0;
544  for (auto &hds : ft.hits()) {
545  TotemRPDetId plId(hds.detId());
546  bool uProj = plId.isStripsCoordinateUDirection();
547 
548  for (auto &h : hds) {
549  h.position(); // just to keep compiler silent
550  if (uProj)
551  n_pl_in_fit_u++;
552  else
553  n_pl_in_fit_v++;
554  }
555  }
556 
557  plots.h_planes_fit_u->Fill(n_pl_in_fit_u);
558  plots.h_planes_fit_v->Fill(n_pl_in_fit_v);
559 
560  // mean position of U and V planes
561  TotemRPDetId plId_V(rpId);
562  plId_V.setPlane(0);
563  TotemRPDetId plId_U(rpId);
564  plId_U.setPlane(1);
565 
566  double rp_x = (geometry->sensor(plId_V)->translation().x() + geometry->sensor(plId_U)->translation().x()) / 2.;
567  double rp_y = (geometry->sensor(plId_V)->translation().y() + geometry->sensor(plId_U)->translation().y()) / 2.;
568 
569  // mean read-out direction of U and V planes
570  const auto &rod_U = geometry->localToGlobalDirection(plId_U, CTPPSGeometry::Vector(0., 1., 0.));
571  const auto &rod_V = geometry->localToGlobalDirection(plId_V, CTPPSGeometry::Vector(0., 1., 0.));
572 
573  double x = ft.x0() - rp_x;
574  double y = ft.y0() - rp_y;
575 
576  plots.trackHitsCumulativeHist->Fill(x, y);
577 
578  double U = x * rod_U.x() + y * rod_U.y();
579  double V = x * rod_V.x() + y * rod_V.y();
580 
581  plots.track_u_profile->Fill(U);
582  plots.track_v_profile->Fill(V);
583  }
584  }
585 
586  // restore trigger-sector map from digis
587  map<unsigned int, map<unsigned int, map<unsigned int, unsigned int>>>
588  triggerSectorMap; // [rpId, U/V flag, sector] --> number of planes
589  for (const auto &dp : *digi) {
590  TotemRPDetId plId(dp.detId());
591  CTPPSDetId rpId = plId.rpId();
592  unsigned int uvFlag = (plId.isStripsCoordinateUDirection()) ? 0 : 1;
593 
594  set<unsigned int> sectors;
595  for (const auto &d : dp) {
596  unsigned int sector = d.stripNumber() / 32;
597  sectors.insert(sector);
598  }
599 
600  for (const auto &sector : sectors)
601  triggerSectorMap[rpId][uvFlag][sector]++;
602  }
603 
604  for (auto &rpp : triggerSectorMap) {
605  const unsigned int rpId = rpp.first;
606 
607  // trigger sector is counted as active if at least 3 planes report activity
608 
609  set<unsigned int> triggerSectorsU;
610  for (const auto sp : rpp.second[0]) {
611  if (sp.second >= 3)
612  triggerSectorsU.insert(sp.first);
613  }
614 
615  set<unsigned int> triggerSectorsV;
616  for (const auto sp : rpp.second[1]) {
617  if (sp.second >= 3)
618  triggerSectorsV.insert(sp.first);
619  }
620 
621  auto plIt = potPlots.find(rpId);
622  if (plIt == potPlots.end())
623  continue;
624  auto &plots = plIt->second;
625 
626  const bool high_mult = (triggerSectorsU.size() > 2 && triggerSectorsV.size() > 2);
627 
628  const bool has_track = (rps_with_tracks.find(rpId) != rps_with_tracks.end());
629 
630  for (const auto &secU : triggerSectorsU) {
631  for (const auto &secV : triggerSectorsV) {
632  plots.triggerSectorUVCorrelation_all->Fill(secV, secU);
633 
634  if (!high_mult)
635  plots.triggerSectorUVCorrelation_mult2->Fill(secV, secU);
636 
637  if (has_track)
638  plots.triggerSectorUVCorrelation_track->Fill(secV, secU);
639  }
640  }
641  }
642 }
643 
644 //----------------------------------------------------------------------------------------------------
645 
TotemRPUVPattern::projV
Definition: TotemRPUVPattern.h:34
VeryForwardRealGeometryRecord
Event setup record containing the real (actual) geometry information.
Definition: VeryForwardRealGeometryRecord.h:22
HIPAlignmentAlgorithm_cfi.verbosity
verbosity
Definition: HIPAlignmentAlgorithm_cfi.py:7
cms::cuda::V
cudaStream_t T uint32_t const T *__restrict__ const uint32_t *__restrict__ uint32_t int cudaStream_t V
Definition: HistoContainer.h:99
DDAxes::y
taus_updatedMVAIds_cff.category
category
Definition: taus_updatedMVAIds_cff.py:31
geometry
ESHandle< TrackerGeometry > geometry
Definition: TkLasBeamFitter.cc:200
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
runGCPTkAlMap.title
string title
Definition: runGCPTkAlMap.py:94
TotemRPDQMSource::PlanePlots::cluster_profile_cumulative
MonitorElement * cluster_profile_cumulative
Definition: TotemRPDQMSource.cc:86
TotemRPDQMSource::PotPlots::track_u_profile
MonitorElement * track_u_profile
Definition: TotemRPDQMSource.cc:73
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
ESHandle.h
TotemRPDQMSource::tokenCluster
edm::EDGetTokenT< edm::DetSetVector< TotemRPCluster > > tokenCluster
Definition: TotemRPDQMSource.cc:56
TotemRPDQMSource::PotPlots::activity_v
MonitorElement * activity_v
Definition: TotemRPDQMSource.cc:66
mps_update.status
status
Definition: mps_update.py:69
edm::Run
Definition: Run.h:45
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
geometry
Definition: geometry.py:1
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
TotemRPDQMSource::~TotemRPDQMSource
~TotemRPDQMSource() override
Definition: TotemRPDQMSource.cc:190
DQMStore.h
TotemRPDQMSource::PotPlots::activity
MonitorElement * activity
Definition: TotemRPDQMSource.cc:66
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
TotemRPRecHit.h
TotemRPDQMSource
Definition: TotemRPDQMSource.cc:36
DDAxes::x
TotemRPDetId::plane
uint32_t plane() const
Definition: TotemRPDetId.h:51
findQualityFiles.v
v
Definition: findQualityFiles.py:179
year_2016_postTS2_cff.rpId
rpId
Definition: year_2016_postTS2_cff.py:23
TotemRPCluster.h
edm::Handle
Definition: AssociativeIterator.h:50
CTPPSDetId::nPath
Definition: CTPPSDetId.h:87
dqm::legacy::MonitorElement::getTH1F
virtual TH1F * getTH1F() const
Definition: MonitorElement.h:478
TotemRPDetId::setPlane
void setPlane(uint32_t det)
Definition: TotemRPDetId.h:53
TotemRPDetId::isStripsCoordinateUDirection
bool isStripsCoordinateUDirection() const
Definition: TotemRPDetId.h:71
TotemRPDQMSource::PotPlots::event_category
MonitorElement * event_category
Definition: TotemRPDQMSource.cc:71
TotemRPDetId::planeName
void planeName(std::string &name, NameFlag flag=nFull) const
Definition: TotemRPDetId.h:84
TotemRPDQMSource::PotPlots::track_v_profile
MonitorElement * track_v_profile
Definition: TotemRPDQMSource.cc:73
TotemRPDQMSource::planePlots
std::map< unsigned int, PlanePlots > planePlots
Definition: TotemRPDQMSource.cc:95
TotemRPDQMSource::PotPlots::triggerSectorUVCorrelation_track
MonitorElement * triggerSectorUVCorrelation_track
Definition: TotemRPDQMSource.cc:75
CTPPSGeometry.h
MakerMacros.h
alignCSCRings.s
s
Definition: alignCSCRings.py:92
h
TotemRPDQMSource::PlanePlots
plots related to one RP plane
Definition: TotemRPDQMSource.cc:84
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
Calorimetry_cff.dp
dp
Definition: Calorimetry_cff.py:157
TotemRPDQMSource::PlanePlots::PlanePlots
PlanePlots()
Definition: TotemRPDQMSource.cc:91
TotemRPDQMSource::PotPlots::h_planes_fit_u
MonitorElement * h_planes_fit_u
Definition: TotemRPDQMSource.cc:70
edm::LogProblem
Log< level::Error, true > LogProblem
Definition: MessageLogger.h:131
TotemRPDQMSource::PotPlots::hit_plane_hist
MonitorElement * hit_plane_hist
Definition: TotemRPDQMSource.cc:68
edm::ESHandle< CTPPSGeometry >
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
TotemRPDQMSource::verbosity
unsigned int verbosity
Definition: TotemRPDQMSource.cc:52
TotemRPDQMSource::PotPlots::activity_per_bx
MonitorElement * activity_per_bx
Definition: TotemRPDQMSource.cc:67
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
TotemRPDQMSource::PotPlots::activity_u
MonitorElement * activity_u
Definition: TotemRPDQMSource.cc:66
DQMEDAnalyzer.h
TotemVFATStatus.h
TotemRPDQMSource::PlanePlots::cluster_size
MonitorElement * cluster_size
Definition: TotemRPDQMSource.cc:88
DQMEDAnalyzer
Definition: DQMEDAnalyzer.py:1
TotemRPDQMSource::tokenLocalTrack
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack
Definition: TotemRPDQMSource.cc:59
TotemRPDQMSource::tokenUVPattern
edm::EDGetTokenT< edm::DetSetVector< TotemRPUVPattern > > tokenUVPattern
Definition: TotemRPDQMSource.cc:58
edm::ParameterSet
Definition: ParameterSet.h:47
HLTObjectsMonitor_cfi.plots
plots
Definition: HLTObjectsMonitor_cfi.py:17
TotemRPDQMSource::PlanePlots::efficiency_den
MonitorElement * efficiency_den
Definition: TotemRPDQMSource.cc:89
TotemRPDQMSource::PlanePlots::digi_profile_cumulative
MonitorElement * digi_profile_cumulative
Definition: TotemRPDQMSource.cc:85
Event.h
TotemRPDQMSource::potPlots
std::map< unsigned int, PotPlots > potPlots
Definition: TotemRPDQMSource.cc:81
edm::DetSetVector::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
match
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
CTPPSDetId::nFull
Definition: CTPPSDetId.h:87
CTPPSDetId
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:31
createfilelist.int
int
Definition: createfilelist.py:10
TotemRPDQMSource::PotPlots::vfat_ec_bc_error
MonitorElement * vfat_ec_bc_error
Definition: TotemRPDQMSource.cc:63
TotemRPDQMSource::PotPlots::triggerSectorUVCorrelation_mult2
MonitorElement * triggerSectorUVCorrelation_mult2
Definition: TotemRPDQMSource.cc:74
TotemRPDQMSource::PotPlots::patterns_v
MonitorElement * patterns_v
Definition: TotemRPDQMSource.cc:69
edm::EventSetup
Definition: EventSetup.h:57
TotemRPDQMSource::PotPlots::vfat_problem
MonitorElement * vfat_problem
Definition: TotemRPDQMSource.cc:63
DetSetVector.h
get
#define get
TotemRPDQMSource::PotPlots
plots related to one RP
Definition: TotemRPDQMSource.cc:62
VeryForwardRealGeometryRecord.h
InputTag.h
TotemRPDQMSource::PlanePlots::efficiency_num
MonitorElement * efficiency_num
Definition: TotemRPDQMSource.cc:89
TotemRPDQMSource::tokenStatus
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus
Definition: TotemRPDQMSource.cc:54
TotemRPDQMSource::PotPlots::trackHitsCumulativeHist
MonitorElement * trackHitsCumulativeHist
Definition: TotemRPDQMSource.cc:72
TotemRPDQMSource::PotPlots::PotPlots
PotPlots()
Definition: TotemRPDQMSource.cc:77
TotemRPDQMSource::tokenDigi
edm::EDGetTokenT< edm::DetSetVector< TotemRPDigi > > tokenDigi
Definition: TotemRPDQMSource.cc:55
TotemRPDQMSource::PotPlots::activity_per_bx_short
MonitorElement * activity_per_bx_short
Definition: TotemRPDQMSource.cc:67
TotemRPDQMSource::tokenRecHit
edm::EDGetTokenT< edm::DetSetVector< TotemRPRecHit > > tokenRecHit
Definition: TotemRPDQMSource.cc:57
TotemRPDQMSource::analyze
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
Definition: TotemRPDQMSource.cc:219
std
Definition: JetResolutionObject.h:76
TotemRPDQMSource::PotPlots::h_planes_fit_v
MonitorElement * h_planes_fit_v
Definition: TotemRPDQMSource.cc:70
dqm::implementation::IBooker::book2D
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
TotemRPDQMSource::PotPlots::vfat_corruption
MonitorElement * vfat_corruption
Definition: TotemRPDQMSource.cc:64
TotemRPDetId.h
edm::eventsetup::heterocontainer::insert
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50
EventSetup.h
RPTopology.h
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
TotemRPUVPattern::projU
Definition: TotemRPUVPattern.h:34
dqm::implementation::IBooker
Definition: DQMStore.h:43
TotemRPDQMSource::PotPlots::vfat_missing
MonitorElement * vfat_missing
Definition: TotemRPDQMSource.cc:63
ztail.d
d
Definition: ztail.py:151
TotemRPUVPattern.h
castor_dqm_sourceclient_file_cfg.path
path
Definition: castor_dqm_sourceclient_file_cfg.py:37
RunInfoPI::valid
Definition: RunInfoPayloadInspectoHelper.h:16
TotemRPDQMSource::TotemRPDQMSource
TotemRPDQMSource(const edm::ParameterSet &ps)
Definition: TotemRPDQMSource.cc:177
ParameterSet.h
TotemRPDQMSource::PlanePlots::hit_multiplicity
MonitorElement * hit_multiplicity
Definition: TotemRPDQMSource.cc:87
TotemRPLocalTrack.h
createTree.pp
pp
Definition: createTree.py:17
TotemRPDigi.h
TotemRPDQMSource::PotPlots::triggerSectorUVCorrelation_all
MonitorElement * triggerSectorUVCorrelation_all
Definition: TotemRPDQMSource.cc:74
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
volumeBasedMagneticField_160812_cfi.sectors
sectors
Definition: volumeBasedMagneticField_160812_cfi.py:59
TotemRPDQMSource::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: TotemRPDQMSource.cc:194
TotemRPDetId
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:29
edm::InputTag
Definition: InputTag.h:15
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
TotemRPDQMSource::PotPlots::patterns_u
MonitorElement * patterns_u
Definition: TotemRPDQMSource.cc:69
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
CTPPSDetId::rpName
void rpName(std::string &name, NameFlag flag=nFull) const
Definition: CTPPSDetId.h:132
CTPPSGeometry::Vector
DetGeomDesc::Translation Vector
Definition: CTPPSGeometry.h:39
edm::DetSet::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSet.h:31