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

Constructor & Destructor Documentation

◆ TotemRPDQMSource()

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

Definition at line 178 of file TotemRPDQMSource.cc.

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 }

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

◆ ~TotemRPDQMSource()

TotemRPDQMSource::~TotemRPDQMSource ( )
override

Definition at line 191 of file TotemRPDQMSource.cc.

191 {}

Member Function Documentation

◆ analyze()

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

Definition at line 220 of file TotemRPDQMSource.cc.

220  {
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 }

References taus_updatedMVAIds_cff::category, ztail::d, Calorimetry_cff::dp, options_cfi::eventSetup, geometry, get, 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, year_2016_postTS2_cff::rpId, alignCSCRings::s, volumeBasedMagneticField_160812_cfi::sectors, TotemRPDetId::setPlane(), mps_update::status, tokenCluster, tokenDigi, tokenLocalTrack, tokenRecHit, tokenStatus, tokenUVPattern, PDWG_EXOHSCP_cff::tracks, mitigatedMETSequence_cff::U, cms::cuda::V, findQualityFiles::v, validateGeometry_cfg::valid, verbosity, x, and y.

◆ bookHistograms()

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

Definition at line 195 of file TotemRPDQMSource.cc.

195  {
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 }

References planePlots, potPlots, and year_2016_postTS2_cff::rpId.

Member Data Documentation

◆ planePlots

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

Definition at line 96 of file TotemRPDQMSource.cc.

Referenced by analyze(), and bookHistograms().

◆ potPlots

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

Definition at line 82 of file TotemRPDQMSource.cc.

Referenced by analyze(), and bookHistograms().

◆ tokenCluster

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

Definition at line 57 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenDigi

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

Definition at line 56 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenLocalTrack

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

Definition at line 60 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenRecHit

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

Definition at line 58 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenStatus

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

Definition at line 55 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ tokenUVPattern

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

Definition at line 59 of file TotemRPDQMSource.cc.

Referenced by analyze(), and TotemRPDQMSource().

◆ verbosity

unsigned int TotemRPDQMSource::verbosity
private

Definition at line 53 of file TotemRPDQMSource.cc.

Referenced by analyze().

TotemRPUVPattern::projV
Definition: TotemRPUVPattern.h:34
VeryForwardRealGeometryRecord
Event setup record containing the real (actual) geometry information.
Definition: VeryForwardRealGeometryRecord.h:22
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:30
geometry
ESHandle< TrackerGeometry > geometry
Definition: TkLasBeamFitter.cc:200
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
hfClusterShapes_cfi.hits
hits
Definition: hfClusterShapes_cfi.py:5
TotemRPDQMSource::tokenCluster
edm::EDGetTokenT< edm::DetSetVector< TotemRPCluster > > tokenCluster
Definition: TotemRPDQMSource.cc:57
mps_update.status
status
Definition: mps_update.py:69
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
geometry
Definition: geometry.py:1
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
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
edm::Handle
Definition: AssociativeIterator.h:50
TotemRPDetId::setPlane
void setPlane(uint32_t det)
Definition: TotemRPDetId.h:53
validateGeometry_cfg.valid
valid
Definition: validateGeometry_cfg.py:21
TotemRPDetId::isStripsCoordinateUDirection
bool isStripsCoordinateUDirection() const
Definition: TotemRPDetId.h:71
TotemRPDQMSource::planePlots
std::map< unsigned int, PlanePlots > planePlots
Definition: TotemRPDQMSource.cc:96
alignCSCRings.s
s
Definition: alignCSCRings.py:92
h
Calorimetry_cff.dp
dp
Definition: Calorimetry_cff.py:157
edm::ESHandle
Definition: DTSurvey.h:22
TotemRPDQMSource::verbosity
unsigned int verbosity
Definition: TotemRPDQMSource.cc:53
mitigatedMETSequence_cff.U
U
Definition: mitigatedMETSequence_cff.py:36
TotemRPDQMSource::tokenLocalTrack
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack
Definition: TotemRPDQMSource.cc:60
TotemRPDQMSource::tokenUVPattern
edm::EDGetTokenT< edm::DetSetVector< TotemRPUVPattern > > tokenUVPattern
Definition: TotemRPDQMSource.cc:59
HLTObjectsMonitor_cfi.plots
plots
Definition: HLTObjectsMonitor_cfi.py:17
TotemRPDQMSource::potPlots
std::map< unsigned int, PotPlots > potPlots
Definition: TotemRPDQMSource.cc:82
edm::DetSetVector::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
edm::LogProblem
Definition: MessageLogger.h:387
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
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:31
get
#define get
TotemRPDQMSource::tokenStatus
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus
Definition: TotemRPDQMSource.cc:55
TotemRPDQMSource::tokenDigi
edm::EDGetTokenT< edm::DetSetVector< TotemRPDigi > > tokenDigi
Definition: TotemRPDQMSource.cc:56
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
TotemRPDQMSource::tokenRecHit
edm::EDGetTokenT< edm::DetSetVector< TotemRPRecHit > > tokenRecHit
Definition: TotemRPDQMSource.cc:58
options_cfi.eventSetup
eventSetup
Definition: options_cfi.py:12
edm::eventsetup::heterocontainer::insert
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50
TotemRPUVPattern::projU
Definition: TotemRPUVPattern.h:34
ztail.d
d
Definition: ztail.py:151
createTree.pp
pp
Definition: createTree.py:17
CTPPSDetId::rpId
CTPPSDetId rpId() const
Definition: CTPPSDetId.h:82
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
volumeBasedMagneticField_160812_cfi.sectors
sectors
Definition: volumeBasedMagneticField_160812_cfi.py:59
TotemRPDetId
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:29
edm::InputTag
Definition: InputTag.h:15
CTPPSGeometry::Vector
DetGeomDesc::Translation Vector
Definition: CTPPSGeometry.h:39
edm::DetSet::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSet.h:31