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

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 38 of file TotemRPDQMSource.cc.

Constructor & Destructor Documentation

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

Definition at line 173 of file TotemRPDQMSource.cc.

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

173  :
174  verbosity(ps.getUntrackedParameter<unsigned int>("verbosity", 0))
175 {
176  tokenStatus = consumes<DetSetVector<TotemVFATStatus>>(ps.getParameter<edm::InputTag>("tagStatus"));
177 
178  tokenDigi = consumes< DetSetVector<TotemRPDigi> >(ps.getParameter<edm::InputTag>("tagDigi"));
179  tokenCluster = consumes< edm::DetSetVector<TotemRPCluster> >(ps.getParameter<edm::InputTag>("tagCluster"));
180  tokenRecHit = consumes< edm::DetSetVector<TotemRPRecHit> >(ps.getParameter<edm::InputTag>("tagRecHit"));
181  tokenUVPattern = consumes< DetSetVector<TotemRPUVPattern> >(ps.getParameter<edm::InputTag>("tagUVPattern"));
182  tokenLocalTrack = consumes< DetSetVector<TotemRPLocalTrack> >(ps.getParameter<edm::InputTag>("tagLocalTrack"));
183 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::DetSetVector< TotemRPDigi > > tokenDigi
edm::EDGetTokenT< edm::DetSetVector< TotemRPRecHit > > tokenRecHit
unsigned int verbosity
edm::EDGetTokenT< edm::DetSetVector< TotemRPUVPattern > > tokenUVPattern
edm::EDGetTokenT< edm::DetSetVector< TotemRPCluster > > tokenCluster
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus
TotemRPDQMSource::~TotemRPDQMSource ( )
override

Definition at line 187 of file TotemRPDQMSource.cc.

188 {
189 }

Member Function Documentation

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

Definition at line 223 of file TotemRPDQMSource.cc.

References edm::DetSet< T >::begin(), edm::EventBase::bunchCrossing(), taus_updatedMVAIds_cff::category, edmIntegrityCheck::d, DEFINE_FWK_MODULE, geometry, edm::EventSetup::get(), CTPPSDetId::getRPId(), CTPPSGeometry::getRPTranslation(), CTPPSGeometry::getSensor(), CTPPSGeometry::globalToLocal(), h, hfClusterShapes_cfi::hits, edm::eventsetup::heterocontainer::insert(), TotemRPDetId::isStripsCoordinateUDirection(), edm::HandleBase::isValid(), CTPPSGeometry::localToGlobalDirection(), match(), AlCaHLTBitMon_ParallelJobs::p, TotemRPDetId::plane(), planePlots, nanoDQM_cff::plots, potPlots, createTree::pp, TotemRPUVPattern::projU, TotemRPUVPattern::projV, alignCSCRings::s, TotemRPDetId::setPlane(), mps_update::status, tokenCluster, tokenDigi, tokenLocalTrack, tokenRecHit, tokenStatus, tokenUVPattern, l1t::tracks, DetGeomDesc::translation(), mitigatedMETSequence_cff::U, findQualityFiles::v, verbosity, x, and y.

224 {
225  // get event setup data
227  eventSetup.get<VeryForwardRealGeometryRecord>().get(geometry);
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  {
259  if (verbosity)
260  {
261  LogProblem("TotemRPDQMSource") <<
262  "ERROR in TotemDQMModuleRP::analyze > some of the required inputs are not valid. Skipping this event.\n"
263  << " status.isValid = " << status.isValid() << "\n"
264  << " digi.isValid = " << digi.isValid() << "\n"
265  << " digCluster.isValid = " << digCluster.isValid() << "\n"
266  << " hits.isValid = " << hits.isValid() << "\n"
267  << " patterns.isValid = " << patterns.isValid() << "\n"
268  << " tracks.isValid = " << tracks.isValid();
269  }
270 
271  return;
272  }
273 
274  //------------------------------
275  // Status Plots
276 
277  for (auto &ds : *status)
278  {
279  TotemRPDetId detId(ds.detId());
280  unsigned int plNum = detId.plane();
281  CTPPSDetId rpId = detId.getRPId();
282 
283  auto it = potPlots.find(rpId);
284  if (it == potPlots.end())
285  continue;
286  auto &plots = it->second;
287 
288  for (auto &s : ds)
289  {
290  if (s.isMissing())
291  {
292  plots.vfat_problem->Fill(plNum, s.getChipPosition());
293  plots.vfat_missing->Fill(plNum, s.getChipPosition());
294  }
295 
296  if (s.isECProgressError() || s.isBCProgressError())
297  {
298  plots.vfat_problem->Fill(plNum, s.getChipPosition());
299  plots.vfat_ec_bc_error->Fill(plNum, s.getChipPosition());
300  }
301 
302  if (s.isIDMismatch() || s.isFootprintError() || s.isCRCError())
303  {
304  plots.vfat_problem->Fill(plNum, s.getChipPosition());
305  plots.vfat_corruption->Fill(plNum, s.getChipPosition());
306  }
307  }
308  }
309 
310  //------------------------------
311  // Plane Plots
312 
313  // digi profile cumulative
314  for (DetSetVector<TotemRPDigi>::const_iterator it = digi->begin(); it != digi->end(); ++it)
315  {
316  TotemRPDetId detId(it->detId());
317 
318  auto plIt = planePlots.find(detId);
319  if (plIt == planePlots.end())
320  continue;
321  auto &plots = plIt->second;
322 
323  for (DetSet<TotemRPDigi>::const_iterator dit = it->begin(); dit != it->end(); ++dit)
324  plots.digi_profile_cumulative->Fill(dit->getStripNumber());
325  }
326 
327  // cluster plots
328  for (DetSetVector<TotemRPCluster>::const_iterator it = digCluster->begin(); it != digCluster->end(); it++)
329  {
330  TotemRPDetId detId(it->detId());
331 
332  auto plIt = planePlots.find(detId);
333  if (plIt == planePlots.end())
334  continue;
335  auto &plots = plIt->second;
336 
337  // hit multiplicity
338  plots.hit_multiplicity->Fill(it->size());
339 
340  for (DetSet<TotemRPCluster>::const_iterator dit = it->begin(); dit != it->end(); ++dit)
341  {
342  // profile cumulative
343  plots.cluster_profile_cumulative->Fill(dit->getCenterStripPosition());
344 
345  // cluster size
346  plots.cluster_size->Fill(dit->getNumberOfStrips());
347  }
348  }
349 
350  // plane efficiency plots
351  for (auto &ds : *tracks)
352  {
353  CTPPSDetId rpId(ds.detId());
354 
355  for (auto &ft : ds)
356  {
357  if (!ft.isValid())
358  continue;
359 
360  double rp_z = geometry->getRPTranslation(rpId).z();
361 
362  for (unsigned int plNum = 0; plNum < 10; ++plNum)
363  {
364  TotemRPDetId plId = rpId;
365  plId.setPlane(plNum);
366 
367  auto plIt = planePlots.find(plId);
368  if (plIt == planePlots.end())
369  continue;
370  auto &plots = plIt->second;
371 
372  double ft_z = ft.getZ0();
373  double ft_x = ft.getX0() + ft.getTx() * (ft_z - rp_z);
374  double ft_y = ft.getY0() + ft.getTy() * (ft_z - rp_z);
375 
376  double ft_v = geometry->globalToLocal(plId, CLHEP::Hep3Vector(ft_x, ft_y, ft_z)).y();
377 
378  bool hasMatchingHit = false;
379  const auto &hit_ds_it = hits->find(plId);
380  if (hit_ds_it != hits->end())
381  {
382  for (const auto &h : *hit_ds_it)
383  {
384  bool match = (fabs(ft_v - h.getPosition()) < 2.*0.066);
385  if (match)
386  {
387  hasMatchingHit = true;
388  break;
389  }
390  }
391  }
392 
393  plots.efficiency_den->Fill(ft_v);
394  if (hasMatchingHit)
395  plots.efficiency_num->Fill(ft_v);
396  }
397  }
398  }
399 
400 
401  //------------------------------
402  // Roman Pots Plots
403 
404  // determine active planes (from RecHits and VFATStatus)
405  map<unsigned int, set<unsigned int> > planes;
406  map<unsigned int, set<unsigned int> > planes_u;
407  map<unsigned int, set<unsigned int> > planes_v;
408  for (const auto &ds : *hits)
409  {
410  if (ds.empty())
411  continue;
412 
413  TotemRPDetId detId(ds.detId());
414  unsigned int planeNum = detId.plane();
415  CTPPSDetId rpId = detId.getRPId();
416 
417  planes[rpId].insert(planeNum);
418  if (detId.isStripsCoordinateUDirection())
419  planes_u[rpId].insert(planeNum);
420  else
421  planes_v[rpId].insert(planeNum);
422  }
423 
424  for (const auto &ds : *status)
425  {
426  bool activity = false;
427  for (const auto &s : ds)
428  {
429  if (s.isNumberOfClustersSpecified() && s.getNumberOfClusters() > 0)
430  {
431  activity = true;
432  break;
433  }
434  }
435 
436  if (!activity)
437  continue;
438 
439  TotemRPDetId detId(ds.detId());
440  unsigned int planeNum = detId.plane();
441  CTPPSDetId rpId = detId.getRPId();
442 
443  planes[rpId].insert(planeNum);
444  if (detId.isStripsCoordinateUDirection())
445  planes_u[rpId].insert(planeNum);
446  else
447  planes_v[rpId].insert(planeNum);
448  }
449 
450  // plane activity histogram
451  for (std::map<unsigned int, PotPlots>::iterator it = potPlots.begin(); it != potPlots.end(); it++)
452  {
453  it->second.activity->Fill(planes[it->first].size());
454  it->second.activity_u->Fill(planes_u[it->first].size());
455  it->second.activity_v->Fill(planes_v[it->first].size());
456 
457  if (planes[it->first].size() >= 6)
458  {
459  it->second.activity_per_bx->Fill(event.bunchCrossing());
460  it->second.activity_per_bx_short->Fill(event.bunchCrossing());
461  }
462  }
463 
464  for (DetSetVector<TotemRPCluster>::const_iterator it = digCluster->begin(); it != digCluster->end(); it++)
465  {
466  TotemRPDetId detId(it->detId());
467  unsigned int planeNum = detId.plane();
468  CTPPSDetId rpId = detId.getRPId();
469 
470  auto plIt = potPlots.find(rpId);
471  if (plIt == potPlots.end())
472  continue;
473  auto &plots = plIt->second;
474 
475  for (DetSet<TotemRPCluster>::const_iterator dit = it->begin(); dit != it->end(); ++dit)
476  plots.hit_plane_hist->Fill(planeNum, dit->getCenterStripPosition());
477  }
478 
479  // recognized pattern histograms
480  for (auto &ds : *patterns)
481  {
482  CTPPSDetId rpId(ds.detId());
483 
484  auto plIt = potPlots.find(rpId);
485  if (plIt == potPlots.end())
486  continue;
487  auto &plots = plIt->second;
488 
489  // count U and V patterns
490  unsigned int u = 0, v = 0;
491  for (auto &p : ds)
492  {
493  if (! p.getFittable())
494  continue;
495 
496  if (p.getProjection() == TotemRPUVPattern::projU)
497  u++;
498 
499  if (p.getProjection() == TotemRPUVPattern::projV)
500  v++;
501  }
502 
503  plots.patterns_u->Fill(u);
504  plots.patterns_v->Fill(v);
505  }
506 
507  // event-category histogram
508  for (auto &it : potPlots)
509  {
510  TotemRPDetId rpId(it.first);
511  auto &pp = it.second;
512 
513  // process hit data for this plot
514  unsigned int pl_u = planes_u[rpId].size();
515  unsigned int pl_v = planes_v[rpId].size();
516 
517  // process pattern data for this pot
518  const auto &rp_pat_it = patterns->find(rpId);
519 
520  unsigned int pat_u = 0, pat_v = 0;
521  if (rp_pat_it != patterns->end())
522  {
523  for (auto &p : *rp_pat_it)
524  {
525  if (! p.getFittable())
526  continue;
527 
528  if (p.getProjection() == TotemRPUVPattern::projU)
529  pat_u++;
530 
531  if (p.getProjection() == TotemRPUVPattern::projV)
532  pat_v++;
533  }
534  }
535 
536  // determine category
537  signed int category = -1;
538 
539  if (pl_u == 0 && pl_v == 0) category = 0; // empty
540 
541  if (category == -1 && pat_u + pat_v <= 1)
542  {
543  if (pl_u + pl_v < 6)
544  category = 1; // insuff
545  else
546  category = 4; // shower
547  }
548 
549  if (pat_u == 1 && pat_v == 1) category = 2; // 1-track
550 
551  if (category == -1) category = 3; // multi-track
552 
553  pp.event_category->Fill(category);
554  }
555 
556  // RP track-fit plots
557  set<unsigned int> rps_with_tracks;
558 
559  for (auto &ds : *tracks)
560  {
561  CTPPSDetId rpId(ds.detId());
562 
563  rps_with_tracks.insert(rpId);
564 
565  auto plIt = potPlots.find(rpId);
566  if (plIt == potPlots.end())
567  continue;
568  auto &plots = plIt->second;
569 
570  for (auto &ft : ds)
571  {
572  if (!ft.isValid())
573  continue;
574 
575  // number of planes contributing to (valid) fits
576  unsigned int n_pl_in_fit_u = 0, n_pl_in_fit_v = 0;
577  for (auto &hds : ft.getHits())
578  {
579  TotemRPDetId plId(hds.detId());
580  bool uProj = plId.isStripsCoordinateUDirection();
581 
582  for (auto &h : hds)
583  {
584  h.getPosition(); // just to keep compiler silent
585  if (uProj)
586  n_pl_in_fit_u++;
587  else
588  n_pl_in_fit_v++;
589  }
590  }
591 
592  plots.h_planes_fit_u->Fill(n_pl_in_fit_u);
593  plots.h_planes_fit_v->Fill(n_pl_in_fit_v);
594 
595  // mean position of U and V planes
596  TotemRPDetId plId_V(rpId); plId_V.setPlane(0);
597  TotemRPDetId plId_U(rpId); plId_U.setPlane(1);
598 
599  double rp_x = ( geometry->getSensor(plId_V)->translation().x() +
600  geometry->getSensor(plId_U)->translation().x() ) / 2.;
601  double rp_y = ( geometry->getSensor(plId_V)->translation().y() +
602  geometry->getSensor(plId_U)->translation().y() ) / 2.;
603 
604  // mean read-out direction of U and V planes
605  CLHEP::Hep3Vector rod_U = geometry->localToGlobalDirection(plId_U, CLHEP::Hep3Vector(0., 1., 0.));
606  CLHEP::Hep3Vector rod_V = geometry->localToGlobalDirection(plId_V, CLHEP::Hep3Vector(0., 1., 0.));
607 
608  double x = ft.getX0() - rp_x;
609  double y = ft.getY0() - rp_y;
610 
611  plots.trackHitsCumulativeHist->Fill(x, y);
612 
613  double U = x * rod_U.x() + y * rod_U.y();
614  double V = x * rod_V.x() + y * rod_V.y();
615 
616  plots.track_u_profile->Fill(U);
617  plots.track_v_profile->Fill(V);
618  }
619  }
620 
621  // restore trigger-sector map from digis
622  map<unsigned int, map<unsigned int, map<unsigned int, unsigned int>>> triggerSectorMap; // [rpId, U/V flag, sector] --> number of planes
623  for (const auto &dp : *digi)
624  {
625  TotemRPDetId plId(dp.detId());
626  CTPPSDetId rpId = plId.getRPId();
627  unsigned int uvFlag = (plId.isStripsCoordinateUDirection()) ? 0 : 1;
628 
629  set<unsigned int> sectors;
630  for (const auto &d : dp)
631  {
632  unsigned int sector = d.getStripNumber() / 32;
633  sectors.insert(sector);
634  }
635 
636  for (const auto &sector : sectors)
637  triggerSectorMap[rpId][uvFlag][sector]++;
638  }
639 
640  for (auto &rpp : triggerSectorMap)
641  {
642  const unsigned int rpId = rpp.first;
643 
644  // trigger sector is counted as active if at least 3 planes report activity
645 
646  set<unsigned int> triggerSectorsU;
647  for (const auto sp : rpp.second[0])
648  {
649  if (sp.second >= 3)
650  triggerSectorsU.insert(sp.first);
651  }
652 
653  set<unsigned int> triggerSectorsV;
654  for (const auto sp : rpp.second[1])
655  {
656  if (sp.second >= 3)
657  triggerSectorsV.insert(sp.first);
658  }
659 
660  auto plIt = potPlots.find(rpId);
661  if (plIt == potPlots.end())
662  continue;
663  auto &plots = plIt->second;
664 
665  const bool high_mult = (triggerSectorsU.size() > 2 && triggerSectorsV.size() > 2);
666 
667  const bool has_track = (rps_with_tracks.find(rpId) != rps_with_tracks.end());
668 
669  for (const auto &secU : triggerSectorsU)
670  {
671  for (const auto &secV : triggerSectorsV)
672  {
673  plots.triggerSectorUVCorrelation_all->Fill(secV, secU);
674 
675  if (!high_mult)
676  plots.triggerSectorUVCorrelation_mult2->Fill(secV, secU);
677 
678  if (has_track)
679  plots.triggerSectorUVCorrelation_track->Fill(secV, secU);
680  }
681  }
682  }
683 }
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:30
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
uint32_t plane() const
Definition: TotemRPDetId.h:49
bool isStripsCoordinateUDirection() const
Definition: TotemRPDetId.h:80
edm::EDGetTokenT< edm::DetSetVector< TotemRPDigi > > tokenDigi
Event setup record containing the real (actual) geometry information.
std::map< unsigned int, PlanePlots > planePlots
edm::EDGetTokenT< edm::DetSetVector< TotemRPRecHit > > tokenRecHit
const DetGeomDesc * getSensor(unsigned int id) const
returns geometry of a detector performs necessary checks, returns NULL if fails
unsigned int verbosity
edm::EDGetTokenT< edm::DetSetVector< TotemRPUVPattern > > tokenUVPattern
DDTranslation translation() const
Definition: DetGeomDesc.h:84
CTPPSDetId getRPId() const
Definition: CTPPSDetId.h:97
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:49
bool isValid() const
Definition: HandleBase.h:74
iterator begin()
Definition: DetSet.h:59
CLHEP::Hep3Vector getRPTranslation(unsigned int id) const
edm::EDGetTokenT< edm::DetSetVector< TotemRPCluster > > tokenCluster
CLHEP::Hep3Vector localToGlobalDirection(unsigned int id, const CLHEP::Hep3Vector &) const
void setPlane(uint32_t det)
Definition: TotemRPDetId.h:54
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:32
ESHandle< TrackerGeometry > geometry
std::map< unsigned int, PotPlots > potPlots
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
CLHEP::Hep3Vector globalToLocal(const DetGeomDesc *, const CLHEP::Hep3Vector &) const
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus
Definition: event.py:1
void TotemRPDQMSource::bookHistograms ( DQMStore::IBooker ibooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overrideprotected

Definition at line 193 of file TotemRPDQMSource.cc.

References DQMStore::IBooker::cd(), planePlots, potPlots, and DQMStore::IBooker::setCurrentFolder().

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

Member Data Documentation

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

Definition at line 92 of file TotemRPDQMSource.cc.

Referenced by analyze(), and bookHistograms().

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

Definition at line 77 of file TotemRPDQMSource.cc.

Referenced by analyze(), and bookHistograms().

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

Definition at line 53 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

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

Definition at line 52 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

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

Definition at line 56 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

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

Definition at line 54 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

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

Definition at line 51 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

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

Definition at line 55 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

unsigned int TotemRPDQMSource::verbosity
private

Definition at line 49 of file TotemRPDQMSource.cc.

Referenced by analyze().