CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Protected Member Functions | Private Attributes
TotemRPDQMSource Class Reference
Inheritance diagram for TotemRPDQMSource:

Classes

struct  PlanePlots
 plots related to one RP plane More...
 
struct  PotPlots
 plots related to one RP More...
 

Public Member Functions

 TotemRPDQMSource (const edm::ParameterSet &ps)
 
 ~TotemRPDQMSource () override
 

Protected Member Functions

void analyze (edm::Event const &e, edm::EventSetup const &eSetup) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 

Private Attributes

edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecordgeometryToken_
 
std::map< unsigned int, PlanePlotsplanePlots
 
std::map< unsigned int, PotPlotspotPlots
 
edm::EDGetTokenT< edm::DetSetVector< TotemRPCluster > > tokenCluster
 
edm::EDGetTokenT< edm::DetSetVector< TotemRPDigi > > tokenDigi
 
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack
 
edm::EDGetTokenT< edm::DetSetVector< TotemRPRecHit > > tokenRecHit
 
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus
 
edm::EDGetTokenT< edm::DetSetVector< TotemRPUVPattern > > tokenUVPattern
 
unsigned int verbosity
 

Detailed Description

Definition at line 37 of file TotemRPDQMSource.cc.

Constructor & Destructor Documentation

◆ TotemRPDQMSource()

TotemRPDQMSource::TotemRPDQMSource ( const edm::ParameterSet ps)

Definition at line 180 of file TotemRPDQMSource.cc.

References edm::ParameterSet::getParameter(), tokenCluster, tokenDigi, tokenLocalTrack, tokenRecHit, tokenStatus, and tokenUVPattern.

181  : verbosity(ps.getUntrackedParameter<unsigned int>("verbosity", 0)),
183 
184 {
185  tokenStatus = consumes<DetSetVector<TotemVFATStatus>>(ps.getParameter<edm::InputTag>("tagStatus"));
186 
187  tokenDigi = consumes<DetSetVector<TotemRPDigi>>(ps.getParameter<edm::InputTag>("tagDigi"));
188  tokenCluster = consumes<edm::DetSetVector<TotemRPCluster>>(ps.getParameter<edm::InputTag>("tagCluster"));
189  tokenRecHit = consumes<edm::DetSetVector<TotemRPRecHit>>(ps.getParameter<edm::InputTag>("tagRecHit"));
190  tokenUVPattern = consumes<DetSetVector<TotemRPUVPattern>>(ps.getParameter<edm::InputTag>("tagUVPattern"));
191  tokenLocalTrack = consumes<DetSetVector<TotemRPLocalTrack>>(ps.getParameter<edm::InputTag>("tagLocalTrack"));
192 }
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > geometryToken_
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus
T getUntrackedParameter(std::string const &, T const &) const
unsigned int verbosity
edm::EDGetTokenT< edm::DetSetVector< TotemRPUVPattern > > tokenUVPattern
edm::EDGetTokenT< edm::DetSetVector< TotemRPCluster > > tokenCluster
edm::EDGetTokenT< edm::DetSetVector< TotemRPRecHit > > tokenRecHit
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack
edm::EDGetTokenT< edm::DetSetVector< TotemRPDigi > > tokenDigi

◆ ~TotemRPDQMSource()

TotemRPDQMSource::~TotemRPDQMSource ( )
override

Definition at line 196 of file TotemRPDQMSource.cc.

196 {}

Member Function Documentation

◆ analyze()

void TotemRPDQMSource::analyze ( edm::Event const &  e,
edm::EventSetup const &  eSetup 
)
overrideprotected

Definition at line 225 of file TotemRPDQMSource.cc.

References taus_updatedMVAIds_cff::category, ztail::d, Calorimetry_cff::dp, options_cfi::eventSetup, geometryToken_, h, hfClusterShapes_cfi::hits, edm::eventsetup::heterocontainer::insert(), TotemRPDetId::isStripsCoordinateUDirection(), edm::HandleBase::isValid(), match(), AlCaHLTBitMon_ParallelJobs::p, TotemRPDetId::plane(), planePlots, HLTObjectsMonitor_cfi::plots, potPlots, createTree::pp, TotemRPUVPattern::projU, TotemRPUVPattern::projV, CTPPSDetId::rpId(), alignCSCRings::s, volumeBasedMagneticField_160812_cfi::sectors, TotemRPDetId::setPlane(), mps_update::status, tokenCluster, tokenDigi, tokenLocalTrack, tokenRecHit, tokenStatus, tokenUVPattern, tracks, mitigatedMETSequence_cff::U, cms::cuda::V, findQualityFiles::v, validateGeometry_cfg::valid, verbosity, x, and y.

225  {
226  // get event setup data
227  auto const &geometry = eventSetup.getData(geometryToken_);
228 
229  // get event data
231  event.getByToken(tokenStatus, status);
232 
234  event.getByToken(tokenDigi, digi);
235 
237  event.getByToken(tokenCluster, digCluster);
238 
240  event.getByToken(tokenRecHit, hits);
241 
243  event.getByToken(tokenUVPattern, patterns);
244 
246  event.getByToken(tokenLocalTrack, tracks);
247 
248  // check validity
249  bool valid = true;
250  valid &= status.isValid();
251  valid &= digi.isValid();
252  valid &= digCluster.isValid();
253  valid &= hits.isValid();
254  valid &= patterns.isValid();
255  valid &= tracks.isValid();
256 
257  if (!valid) {
258  if (verbosity) {
259  LogProblem("TotemRPDQMSource")
260  << "ERROR in TotemDQMModuleRP::analyze > some of the required inputs are not valid. Skipping this event.\n"
261  << " status.isValid = " << status.isValid() << "\n"
262  << " digi.isValid = " << digi.isValid() << "\n"
263  << " digCluster.isValid = " << digCluster.isValid() << "\n"
264  << " hits.isValid = " << hits.isValid() << "\n"
265  << " patterns.isValid = " << patterns.isValid() << "\n"
266  << " tracks.isValid = " << tracks.isValid();
267  }
268 
269  return;
270  }
271 
272  //------------------------------
273  // Status Plots
274 
275  for (auto &ds : *status) {
276  TotemRPDetId detId(ds.detId());
277  unsigned int plNum = detId.plane();
278  CTPPSDetId rpId = detId.rpId();
279 
280  auto it = potPlots.find(rpId);
281  if (it == potPlots.end())
282  continue;
283  auto &plots = it->second;
284 
285  for (auto &s : ds) {
286  if (s.isMissing()) {
287  plots.vfat_problem->Fill(plNum, s.chipPosition());
288  plots.vfat_missing->Fill(plNum, s.chipPosition());
289  }
290 
291  if (s.isECProgressError() || s.isBCProgressError()) {
292  plots.vfat_problem->Fill(plNum, s.chipPosition());
293  plots.vfat_ec_bc_error->Fill(plNum, s.chipPosition());
294  }
295 
296  if (s.isIDMismatch() || s.isFootprintError() || s.isCRCError()) {
297  plots.vfat_problem->Fill(plNum, s.chipPosition());
298  plots.vfat_corruption->Fill(plNum, s.chipPosition());
299  }
300  }
301  }
302 
303  //------------------------------
304  // Plane Plots
305 
306  // digi profile cumulative
307  for (DetSetVector<TotemRPDigi>::const_iterator it = digi->begin(); it != digi->end(); ++it) {
308  TotemRPDetId detId(it->detId());
309 
310  auto plIt = planePlots.find(detId);
311  if (plIt == planePlots.end())
312  continue;
313  auto &plots = plIt->second;
314 
315  for (DetSet<TotemRPDigi>::const_iterator dit = it->begin(); dit != it->end(); ++dit)
316  plots.digi_profile_cumulative->Fill(dit->stripNumber());
317  }
318 
319  // cluster plots
320  for (DetSetVector<TotemRPCluster>::const_iterator it = digCluster->begin(); it != digCluster->end(); it++) {
321  TotemRPDetId detId(it->detId());
322 
323  auto plIt = planePlots.find(detId);
324  if (plIt == planePlots.end())
325  continue;
326  auto &plots = plIt->second;
327 
328  // hit multiplicity
329  plots.hit_multiplicity->Fill(it->size());
330 
331  for (DetSet<TotemRPCluster>::const_iterator dit = it->begin(); dit != it->end(); ++dit) {
332  // profile cumulative
333  plots.cluster_profile_cumulative->Fill(dit->centerStripPosition());
334 
335  // cluster size
336  plots.cluster_size->Fill(dit->numberOfStrips());
337  }
338  }
339 
340  // plane efficiency plots
341  for (auto &ds : *tracks) {
342  CTPPSDetId rpId(ds.detId());
343 
344  for (auto &ft : ds) {
345  if (!ft.isValid())
346  continue;
347 
348  double rp_z = geometry.rpTranslation(rpId).z();
349 
350  for (unsigned int plNum = 0; plNum < 10; ++plNum) {
351  TotemRPDetId plId = rpId;
352  plId.setPlane(plNum);
353 
354  auto plIt = planePlots.find(plId);
355  if (plIt == planePlots.end())
356  continue;
357  auto &plots = plIt->second;
358 
359  double ft_z = ft.z0();
360  double ft_x = ft.x0() + ft.tx() * (ft_z - rp_z);
361  double ft_y = ft.y0() + ft.ty() * (ft_z - rp_z);
362 
363  double ft_v = geometry.globalToLocal(plId, CTPPSGeometry::Vector(ft_x, ft_y, ft_z)).y();
364 
365  bool hasMatchingHit = false;
366  const auto &hit_ds_it = hits->find(plId);
367  if (hit_ds_it != hits->end()) {
368  for (const auto &h : *hit_ds_it) {
369  bool match = (fabs(ft_v - h.position()) < 2. * 0.066);
370  if (match) {
371  hasMatchingHit = true;
372  break;
373  }
374  }
375  }
376 
377  plots.efficiency_den->Fill(ft_v);
378  if (hasMatchingHit)
379  plots.efficiency_num->Fill(ft_v);
380  }
381  }
382  }
383 
384  //------------------------------
385  // Roman Pots Plots
386 
387  // determine active planes (from RecHits and VFATStatus)
388  map<unsigned int, set<unsigned int>> planes;
389  map<unsigned int, set<unsigned int>> planes_u;
390  map<unsigned int, set<unsigned int>> planes_v;
391  for (const auto &ds : *hits) {
392  if (ds.empty())
393  continue;
394 
395  TotemRPDetId detId(ds.detId());
396  unsigned int planeNum = detId.plane();
397  CTPPSDetId rpId = detId.rpId();
398 
399  planes[rpId].insert(planeNum);
400  if (detId.isStripsCoordinateUDirection())
401  planes_u[rpId].insert(planeNum);
402  else
403  planes_v[rpId].insert(planeNum);
404  }
405 
406  for (const auto &ds : *status) {
407  bool activity = false;
408  for (const auto &s : ds) {
409  if (s.isNumberOfClustersSpecified() && s.numberOfClusters() > 0) {
410  activity = true;
411  break;
412  }
413  }
414 
415  if (!activity)
416  continue;
417 
418  TotemRPDetId detId(ds.detId());
419  unsigned int planeNum = detId.plane();
420  CTPPSDetId rpId = detId.rpId();
421 
422  planes[rpId].insert(planeNum);
423  if (detId.isStripsCoordinateUDirection())
424  planes_u[rpId].insert(planeNum);
425  else
426  planes_v[rpId].insert(planeNum);
427  }
428 
429  // plane activity histogram
430  for (std::map<unsigned int, PotPlots>::iterator it = potPlots.begin(); it != potPlots.end(); it++) {
431  it->second.activity->Fill(planes[it->first].size());
432  it->second.activity_u->Fill(planes_u[it->first].size());
433  it->second.activity_v->Fill(planes_v[it->first].size());
434 
435  if (planes[it->first].size() >= 6) {
436  it->second.activity_per_bx->Fill(event.bunchCrossing());
437  it->second.activity_per_bx_short->Fill(event.bunchCrossing());
438  }
439  }
440 
441  for (DetSetVector<TotemRPCluster>::const_iterator it = digCluster->begin(); it != digCluster->end(); it++) {
442  TotemRPDetId detId(it->detId());
443  unsigned int planeNum = detId.plane();
444  CTPPSDetId rpId = detId.rpId();
445 
446  auto plIt = potPlots.find(rpId);
447  if (plIt == potPlots.end())
448  continue;
449  auto &plots = plIt->second;
450 
451  for (DetSet<TotemRPCluster>::const_iterator dit = it->begin(); dit != it->end(); ++dit)
452  plots.hit_plane_hist->Fill(planeNum, dit->centerStripPosition());
453  }
454 
455  // recognized pattern histograms
456  for (auto &ds : *patterns) {
457  CTPPSDetId rpId(ds.detId());
458 
459  auto plIt = potPlots.find(rpId);
460  if (plIt == potPlots.end())
461  continue;
462  auto &plots = plIt->second;
463 
464  // count U and V patterns
465  unsigned int u = 0, v = 0;
466  for (auto &p : ds) {
467  if (!p.fittable())
468  continue;
469 
470  if (p.projection() == TotemRPUVPattern::projU)
471  u++;
472 
473  if (p.projection() == TotemRPUVPattern::projV)
474  v++;
475  }
476 
477  plots.patterns_u->Fill(u);
478  plots.patterns_v->Fill(v);
479  }
480 
481  // event-category histogram
482  for (auto &it : potPlots) {
483  TotemRPDetId rpId(it.first);
484  auto &pp = it.second;
485 
486  // process hit data for this plot
487  unsigned int pl_u = planes_u[rpId].size();
488  unsigned int pl_v = planes_v[rpId].size();
489 
490  // process pattern data for this pot
491  const auto &rp_pat_it = patterns->find(rpId);
492 
493  unsigned int pat_u = 0, pat_v = 0;
494  if (rp_pat_it != patterns->end()) {
495  for (auto &p : *rp_pat_it) {
496  if (!p.fittable())
497  continue;
498 
499  if (p.projection() == TotemRPUVPattern::projU)
500  pat_u++;
501 
502  if (p.projection() == TotemRPUVPattern::projV)
503  pat_v++;
504  }
505  }
506 
507  // determine category
508  signed int category = -1;
509 
510  if (pl_u == 0 && pl_v == 0)
511  category = 0; // empty
512 
513  if (category == -1 && pat_u + pat_v <= 1) {
514  if (pl_u + pl_v < 6)
515  category = 1; // insuff
516  else
517  category = 4; // shower
518  }
519 
520  if (pat_u == 1 && pat_v == 1)
521  category = 2; // 1-track
522 
523  if (category == -1)
524  category = 3; // multi-track
525 
526  pp.event_category->Fill(category);
527  }
528 
529  // RP track-fit plots
530  set<unsigned int> rps_with_tracks;
531 
532  for (auto &ds : *tracks) {
533  CTPPSDetId rpId(ds.detId());
534 
535  rps_with_tracks.insert(rpId);
536 
537  auto plIt = potPlots.find(rpId);
538  if (plIt == potPlots.end())
539  continue;
540  auto &plots = plIt->second;
541 
542  for (auto &ft : ds) {
543  if (!ft.isValid())
544  continue;
545 
546  // number of planes contributing to (valid) fits
547  unsigned int n_pl_in_fit_u = 0, n_pl_in_fit_v = 0;
548  for (auto &hds : ft.hits()) {
549  TotemRPDetId plId(hds.detId());
550  bool uProj = plId.isStripsCoordinateUDirection();
551 
552  for (auto &h : hds) {
553  h.position(); // just to keep compiler silent
554  if (uProj)
555  n_pl_in_fit_u++;
556  else
557  n_pl_in_fit_v++;
558  }
559  }
560 
561  plots.h_planes_fit_u->Fill(n_pl_in_fit_u);
562  plots.h_planes_fit_v->Fill(n_pl_in_fit_v);
563 
564  // mean position of U and V planes
565  TotemRPDetId plId_V(rpId);
566  plId_V.setPlane(0);
567  TotemRPDetId plId_U(rpId);
568  plId_U.setPlane(1);
569 
570  double rp_x = (geometry.sensor(plId_V)->translation().x() + geometry.sensor(plId_U)->translation().x()) / 2.;
571  double rp_y = (geometry.sensor(plId_V)->translation().y() + geometry.sensor(plId_U)->translation().y()) / 2.;
572 
573  // mean read-out direction of U and V planes
574  const auto &rod_U = geometry.localToGlobalDirection(plId_U, CTPPSGeometry::Vector(0., 1., 0.));
575  const auto &rod_V = geometry.localToGlobalDirection(plId_V, CTPPSGeometry::Vector(0., 1., 0.));
576 
577  double x = ft.x0() - rp_x;
578  double y = ft.y0() - rp_y;
579 
580  plots.trackHitsCumulativeHist->Fill(x, y);
581 
582  double U = x * rod_U.x() + y * rod_U.y();
583  double V = x * rod_V.x() + y * rod_V.y();
584 
585  plots.track_u_profile->Fill(U);
586  plots.track_v_profile->Fill(V);
587  }
588  }
589 
590  // restore trigger-sector map from digis
591  map<unsigned int, map<unsigned int, map<unsigned int, unsigned int>>>
592  triggerSectorMap; // [rpId, U/V flag, sector] --> number of planes
593  for (const auto &dp : *digi) {
594  TotemRPDetId plId(dp.detId());
595  CTPPSDetId rpId = plId.rpId();
596  unsigned int uvFlag = (plId.isStripsCoordinateUDirection()) ? 0 : 1;
597 
598  set<unsigned int> sectors;
599  for (const auto &d : dp) {
600  unsigned int sector = d.stripNumber() / 32;
601  sectors.insert(sector);
602  }
603 
604  for (const auto &sector : sectors)
605  triggerSectorMap[rpId][uvFlag][sector]++;
606  }
607 
608  for (auto &rpp : triggerSectorMap) {
609  const unsigned int rpId = rpp.first;
610 
611  // trigger sector is counted as active if at least 3 planes report activity
612 
613  set<unsigned int> triggerSectorsU;
614  for (const auto sp : rpp.second[0]) {
615  if (sp.second >= 3)
616  triggerSectorsU.insert(sp.first);
617  }
618 
619  set<unsigned int> triggerSectorsV;
620  for (const auto sp : rpp.second[1]) {
621  if (sp.second >= 3)
622  triggerSectorsV.insert(sp.first);
623  }
624 
625  auto plIt = potPlots.find(rpId);
626  if (plIt == potPlots.end())
627  continue;
628  auto &plots = plIt->second;
629 
630  const bool high_mult = (triggerSectorsU.size() > 2 && triggerSectorsV.size() > 2);
631 
632  const bool has_track = (rps_with_tracks.find(rpId) != rps_with_tracks.end());
633 
634  for (const auto &secU : triggerSectorsU) {
635  for (const auto &secV : triggerSectorsV) {
636  plots.triggerSectorUVCorrelation_all->Fill(secV, secU);
637 
638  if (!high_mult)
639  plots.triggerSectorUVCorrelation_mult2->Fill(secV, secU);
640 
641  if (has_track)
642  plots.triggerSectorUVCorrelation_track->Fill(secV, secU);
643  }
644  }
645  }
646 }
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:30
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > geometryToken_
DetGeomDesc::Translation Vector
Definition: CTPPSGeometry.h:36
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus
uint32_t plane() const
Definition: TotemRPDetId.h:46
std::map< unsigned int, PlanePlots > planePlots
unsigned int verbosity
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t V
CTPPSDetId rpId() const
Definition: CTPPSDetId.h:78
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50
d
Definition: ztail.py:151
edm::EDGetTokenT< edm::DetSetVector< TotemRPUVPattern > > tokenUVPattern
auto const & tracks
cannot be loose
void setPlane(uint32_t det)
Definition: TotemRPDetId.h:48
edm::EDGetTokenT< edm::DetSetVector< TotemRPCluster > > tokenCluster
bool isValid() const
Definition: HandleBase.h:70
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:32
edm::EDGetTokenT< edm::DetSetVector< TotemRPRecHit > > tokenRecHit
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack
std::map< unsigned int, PotPlots > potPlots
bool isStripsCoordinateUDirection() const
Definition: TotemRPDetId.h:66
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
collection_type::const_iterator const_iterator
Definition: DetSet.h:31
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
edm::EDGetTokenT< edm::DetSetVector< TotemRPDigi > > tokenDigi
Definition: event.py:1
Log< level::Error, true > LogProblem

◆ bookHistograms()

void TotemRPDQMSource::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overrideprotected

Definition at line 200 of file TotemRPDQMSource.cc.

References protons_cff::arm, dqm::implementation::NavigatorBase::cd(), planePlots, potPlots, and dqm::implementation::NavigatorBase::setCurrentFolder().

200  {
201  ibooker.cd();
202  ibooker.setCurrentFolder("CTPPS");
203 
204  // loop over arms
205  for (unsigned int arm : {0, 1}) {
206  // loop over RPs
207  for (unsigned int st_rp : {2, 3, 4, 5, 24, 25}) {
208  const unsigned int st = st_rp / 10;
209  const unsigned int rp = st_rp % 10;
210 
211  TotemRPDetId rpId(arm, st, rp);
212  potPlots[rpId] = PotPlots(ibooker, rpId);
213 
214  // loop over planes
215  for (unsigned int pl = 0; pl < 10; ++pl) {
216  TotemRPDetId plId(arm, st, rp, pl);
217  planePlots[plId] = PlanePlots(ibooker, plId);
218  }
219  }
220  }
221 }
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:30
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
std::map< unsigned int, PlanePlots > planePlots
std::map< unsigned int, PotPlots > potPlots

Member Data Documentation

◆ geometryToken_

edm::ESGetToken<CTPPSGeometry, VeryForwardRealGeometryRecord> TotemRPDQMSource::geometryToken_
private

Definition at line 56 of file TotemRPDQMSource.cc.

Referenced by analyze().

◆ planePlots

std::map<unsigned int, PlanePlots> TotemRPDQMSource::planePlots
private

Definition at line 92 of file TotemRPDQMSource.cc.

Referenced by analyze(), and bookHistograms().

◆ potPlots

std::map<unsigned int, PotPlots> TotemRPDQMSource::potPlots
private

Definition at line 78 of file TotemRPDQMSource.cc.

Referenced by analyze(), and bookHistograms().

◆ tokenCluster

edm::EDGetTokenT<edm::DetSetVector<TotemRPCluster> > TotemRPDQMSource::tokenCluster
private

Definition at line 51 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenDigi

edm::EDGetTokenT<edm::DetSetVector<TotemRPDigi> > TotemRPDQMSource::tokenDigi
private

Definition at line 50 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenLocalTrack

edm::EDGetTokenT<edm::DetSetVector<TotemRPLocalTrack> > TotemRPDQMSource::tokenLocalTrack
private

Definition at line 54 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenRecHit

edm::EDGetTokenT<edm::DetSetVector<TotemRPRecHit> > TotemRPDQMSource::tokenRecHit
private

Definition at line 52 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenStatus

edm::EDGetTokenT<edm::DetSetVector<TotemVFATStatus> > TotemRPDQMSource::tokenStatus
private

Definition at line 49 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenUVPattern

edm::EDGetTokenT<edm::DetSetVector<TotemRPUVPattern> > TotemRPDQMSource::tokenUVPattern
private

Definition at line 53 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ verbosity

unsigned int TotemRPDQMSource::verbosity
private

Definition at line 47 of file TotemRPDQMSource.cc.

Referenced by analyze().