CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Attributes
RPCRecHitValid Class Reference

#include <RPCRecHitValid.h>

Inheritance diagram for RPCRecHitValid:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Member Functions

void analyze (const edm::Event &event, const edm::EventSetup &eventSetup) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 RPCRecHitValid (const edm::ParameterSet &pset)
 
 ~RPCRecHitValid () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
void beginStream (edm::StreamID id) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Types

typedef MonitorElementMEP
 
typedef RPCRecHitCollection RecHits
 
typedef SimHitTPAssociationProducer::SimHitTPAssociationList SimHitAssoc
 
typedef edm::PSimHitContainer SimHits
 
typedef TrackingParticleCollection SimParticles
 

Private Attributes

std::map< int, int > detIdToIndexMapBarrel_
 
std::map< int, int > detIdToIndexMapEndcap_
 
RPCValidHistograms h_
 
MEP h_allOccupancyBarrel_detId
 
MEP h_allOccupancyEndcap_detId
 
MEP h_eventCount
 
MEP h_matchOccupancyBarrel_detId
 
MEP h_matchOccupancyEndcap_detId
 
MEP h_nRPCHitPerRecoMuon
 
MEP h_nRPCHitPerRecoMuonBarrel
 
MEP h_nRPCHitPerRecoMuonEndcap
 
MEP h_nRPCHitPerRecoMuonOverlap
 
MEP h_nRPCHitPerSimMuon
 
MEP h_nRPCHitPerSimMuonBarrel
 
MEP h_nRPCHitPerSimMuonEndcap
 
MEP h_nRPCHitPerSimMuonOverlap
 
MEP h_recoMuonBarrel_eta
 
MEP h_recoMuonBarrel_phi
 
MEP h_recoMuonBarrel_pt
 
MEP h_recoMuonEndcap_eta
 
MEP h_recoMuonEndcap_phi
 
MEP h_recoMuonEndcap_pt
 
MEP h_recoMuonNoRPC_eta
 
MEP h_recoMuonNoRPC_phi
 
MEP h_recoMuonNoRPC_pt
 
MEP h_recoMuonOverlap_eta
 
MEP h_recoMuonOverlap_phi
 
MEP h_recoMuonOverlap_pt
 
MEP h_refOccupancyBarrel_detId
 
MEP h_refOccupancyEndcap_detId
 
MEP h_rollAreaBarrel_detId
 
MEP h_rollAreaEndcap_detId
 
MEP h_simMuonBarrel_eta
 
MEP h_simMuonBarrel_phi
 
MEP h_simMuonBarrel_pt
 
MEP h_simMuonEndcap_eta
 
MEP h_simMuonEndcap_phi
 
MEP h_simMuonEndcap_pt
 
MEP h_simMuonNoRPC_eta
 
MEP h_simMuonNoRPC_phi
 
MEP h_simMuonNoRPC_pt
 
MEP h_simMuonOverlap_eta
 
MEP h_simMuonOverlap_phi
 
MEP h_simMuonOverlap_pt
 
MEP h_simParticleType
 
MEP h_simParticleTypeBarrel
 
MEP h_simParticleTypeEndcap
 
edm::EDGetTokenT< reco::MuonCollectionmuonToken_
 
edm::EDGetTokenT< RecHitsrecHitToken_
 
edm::ESGetToken< RPCGeometry, MuonGeometryRecordrpcGeomToken_
 
edm::ESGetToken< RPCGeometry, MuonGeometryRecordrpcGeomTokenInRun_
 
edm::EDGetTokenT< SimHitAssocsimHitAssocToken_
 
edm::EDGetTokenT< SimHitssimHitToken_
 
edm::EDGetTokenT< SimParticlessimParticleToken_
 
std::string subDir_
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static void globalEndJob (DQMEDAnalyzerGlobalCache const *)
 
static void globalEndLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup, LuminosityBlockContext const *context)
 
static void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup, RunContext const *context)
 
static std::unique_ptr< DQMEDAnalyzerGlobalCacheinitializeGlobalCache (edm::ParameterSet const &)
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Definition at line 26 of file RPCRecHitValid.h.

Member Typedef Documentation

◆ MEP

Definition at line 50 of file RPCRecHitValid.h.

◆ RecHits

Definition at line 36 of file RPCRecHitValid.h.

◆ SimHitAssoc

Definition at line 38 of file RPCRecHitValid.h.

◆ SimHits

Definition at line 35 of file RPCRecHitValid.h.

◆ SimParticles

Definition at line 37 of file RPCRecHitValid.h.

Constructor & Destructor Documentation

◆ RPCRecHitValid()

RPCRecHitValid::RPCRecHitValid ( const edm::ParameterSet pset)

Definition at line 23 of file RPCRecHitValid.cc.

References deDxTools::esConsumes(), muonDTDigis_cfi::pset, and AlCaHLTBitMon_QueryRunRegistry::string.

23  {
24  simHitToken_ = consumes<SimHits>(pset.getParameter<edm::InputTag>("simHit"));
25  recHitToken_ = consumes<RecHits>(pset.getParameter<edm::InputTag>("recHit"));
26  simParticleToken_ = consumes<SimParticles>(pset.getParameter<edm::InputTag>("simTrack"));
27  simHitAssocToken_ = consumes<SimHitAssoc>(pset.getParameter<edm::InputTag>("simHitAssoc"));
28  muonToken_ = consumes<reco::MuonCollection>(pset.getParameter<edm::InputTag>("muon"));
29 
30  subDir_ = pset.getParameter<std::string>("subDir");
31 
33  rpcGeomTokenInRun_ = esConsumes<edm::Transition::BeginRun>();
34 }
edm::EDGetTokenT< RecHits > recHitToken_
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
edm::EDGetTokenT< SimHitAssoc > simHitAssocToken_
edm::EDGetTokenT< SimParticles > simParticleToken_
edm::ESGetToken< RPCGeometry, MuonGeometryRecord > rpcGeomToken_
edm::ESGetToken< RPCGeometry, MuonGeometryRecord > rpcGeomTokenInRun_
std::string subDir_
edm::EDGetTokenT< reco::MuonCollection > muonToken_
edm::EDGetTokenT< SimHits > simHitToken_

◆ ~RPCRecHitValid()

RPCRecHitValid::~RPCRecHitValid ( )
inlineoverride

Definition at line 29 of file RPCRecHitValid.h.

29 {};

Member Function Documentation

◆ analyze()

void RPCRecHitValid::analyze ( const edm::Event event,
const edm::EventSetup eventSetup 
)
overridevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 274 of file RPCRecHitValid.cc.

References funct::abs(), hcalRecHitTable_cff::detId, dX(), fftjetvertexadder_cfi::errX, options_cfi::eventSetup, mps_fire::i, DetId::Muon, HLT_2024v14_cff::muon, dqmiodumpmetadata::n, or, FastTimerService_cff::range, rpcPointValidation_cfi::recHit, nano_mu_digi_cff::region, RPCDetId::region(), relativeConstraints::ring, nano_mu_digi_cff::roll, MuonSubdetId::RPC, rpcPointValidation_cfi::simHit, SimHitTPAssociationProducer::simHitTPAssociationListGreater(), mathSSE::sqrt(), relativeConstraints::station, and hcalRecHitTable_cff::time.

274  {
275  h_eventCount->Fill(1);
276 
277  // Get the RPC Geometry
278  auto rpcGeom = eventSetup.getHandle(rpcGeomToken_);
279 
280  // Retrieve SimHits from the event
282  if (!event.getByToken(simHitToken_, simHitHandle)) {
283  edm::LogInfo("RPCRecHitValid") << "Cannot find simHit collection\n";
284  return;
285  }
286 
287  // Retrieve RecHits from the event
289  if (!event.getByToken(recHitToken_, recHitHandle)) {
290  edm::LogInfo("RPCRecHitValid") << "Cannot find recHit collection\n";
291  return;
292  }
293 
294  // Get SimParticles
295  edm::Handle<TrackingParticleCollection> simParticleHandle;
296  if (!event.getByToken(simParticleToken_, simParticleHandle)) {
297  edm::LogInfo("RPCRecHitValid") << "Cannot find TrackingParticle collection\n";
298  return;
299  }
300 
301  // Get SimParticle to SimHit association map
303  if (!event.getByToken(simHitAssocToken_, simHitsTPAssoc)) {
304  edm::LogInfo("RPCRecHitValid") << "Cannot find TrackingParticle to SimHit association map\n";
305  return;
306  }
307 
308  // Get RecoMuons
310  if (!event.getByToken(muonToken_, muonHandle)) {
311  edm::LogInfo("RPCRecHitValid") << "Cannot find muon collection\n";
312  return;
313  }
314 
315  typedef edm::PSimHitContainer::const_iterator SimHitIter;
316  typedef RPCRecHitCollection::const_iterator RecHitIter;
317  typedef std::vector<TrackPSimHitRef> SimHitRefs;
318 
319  // TrackingParticles with (and without) RPC simHits
320  SimHitRefs muonSimHits, pthrSimHits;
321 
322  for (int i = 0, n = simParticleHandle->size(); i < n; ++i) {
323  TrackingParticleRef simParticle(simParticleHandle, i);
324  if (simParticle->pt() < 1.0 or simParticle->p() < 2.5)
325  continue; // globalMuon acceptance
326 
327  // Collect SimHits from this Tracking Particle
328  SimHitRefs simHitsFromParticle;
329  auto range = std::equal_range(simHitsTPAssoc->begin(),
330  simHitsTPAssoc->end(),
331  std::make_pair(simParticle, TrackPSimHitRef()),
333  for (auto simParticleToHit = range.first; simParticleToHit != range.second; ++simParticleToHit) {
334  auto simHit = simParticleToHit->second;
335  const DetId detId(simHit->detUnitId());
336  if (detId.det() != DetId::Muon or detId.subdetId() != MuonSubdetId::RPC)
337  continue;
338 
339  simHitsFromParticle.push_back(simParticleToHit->second);
340  }
341  const int nRPCHit = simHitsFromParticle.size();
342  const bool hasRPCHit = nRPCHit > 0;
343 
344  if (abs(simParticle->pdgId()) == 13) {
345  muonSimHits.insert(muonSimHits.end(), simHitsFromParticle.begin(), simHitsFromParticle.end());
346 
347  // Count number of Barrel hits and Endcap hits
348  int nRPCHitBarrel = 0;
349  int nRPCHitEndcap = 0;
350  for (const auto &simHit : simHitsFromParticle) {
351  const RPCDetId rpcDetId = static_cast<const RPCDetId>(simHit->detUnitId());
352  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(rpcDetId));
353  if (!roll)
354  continue;
355 
356  if (rpcDetId.region() == 0)
357  ++nRPCHitBarrel;
358  else
359  ++nRPCHitEndcap;
360  }
361 
362  // Fill TrackingParticle related histograms
363  h_nRPCHitPerSimMuon->Fill(nRPCHit);
364  if (nRPCHitBarrel and nRPCHitEndcap) {
366  h_simMuonOverlap_pt->Fill(simParticle->pt());
367  h_simMuonOverlap_eta->Fill(simParticle->eta());
368  h_simMuonOverlap_phi->Fill(simParticle->phi());
369  } else if (nRPCHitBarrel) {
371  h_simMuonBarrel_pt->Fill(simParticle->pt());
372  h_simMuonBarrel_eta->Fill(simParticle->eta());
373  h_simMuonBarrel_phi->Fill(simParticle->phi());
374  } else if (nRPCHitEndcap) {
376  h_simMuonEndcap_pt->Fill(simParticle->pt());
377  h_simMuonEndcap_eta->Fill(simParticle->eta());
378  h_simMuonEndcap_phi->Fill(simParticle->phi());
379  } else {
380  h_simMuonNoRPC_pt->Fill(simParticle->pt());
381  h_simMuonNoRPC_eta->Fill(simParticle->eta());
382  h_simMuonNoRPC_phi->Fill(simParticle->phi());
383  }
384  }
385 
386  if (hasRPCHit) {
387  switch (simParticle->pdgId()) {
388  case 13:
390  break;
391  case -13:
393  break;
394  case 11:
396  break;
397  case -11:
399  break;
400  case 211:
402  break;
403  case -211:
405  break;
406  case 321:
408  break;
409  case -321:
411  break;
412  case 2212:
414  break;
415  case -2212:
417  break;
418  default:
419  h_simParticleType->Fill(10);
420  break;
421  }
422  }
423  }
424 
425  // Loop over muon simHits, fill histograms which does not need associations
426  int nRefHitBarrel = 0, nRefHitEndcap = 0;
427  for (const auto &simHit : muonSimHits) {
428  const RPCDetId detId = static_cast<const RPCDetId>(simHit->detUnitId());
429  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(detId));
430 
431  const int region = roll->id().region();
432  const int ring = roll->id().ring();
433  // const int sector = roll->id().sector();
434  const int station = roll->id().station();
435  // const int layer = roll->id().layer();
436  // const int subSector = roll->id().subsector();
437 
438  if (region == 0) {
439  ++nRefHitBarrel;
443 
445  } else {
446  ++nRefHitEndcap;
449 
451  }
452  }
453 
454  h_.nRefHitBarrel->Fill(nRefHitBarrel);
455  h_.nRefHitEndcap->Fill(nRefHitEndcap);
456 
457  // Loop over recHits, fill histograms which does not need associations
458  int sumClusterSizeBarrel = 0, sumClusterSizeEndcap = 0;
459  int nRecHitBarrel = 0, nRecHitEndcap = 0;
460  for (RecHitIter recHitIter = recHitHandle->begin(); recHitIter != recHitHandle->end(); ++recHitIter) {
461  const RPCDetId detId = static_cast<const RPCDetId>(recHitIter->rpcId());
462  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(detId()));
463  if (!roll)
464  continue;
465 
466  const int region = roll->id().region();
467  const int ring = roll->id().ring();
468  // const int sector = roll->id().sector();
469  const int station = roll->id().station();
470  // const int layer = roll->id().layer();
471  // const int subSector = roll->id().subsector();
472 
473  const double time = recHitIter->timeError() >= 0 ? recHitIter->time() : recHitIter->BunchX() * 25;
474 
475  h_.clusterSize->Fill(recHitIter->clusterSize());
476 
477  if (region == 0) {
478  ++nRecHitBarrel;
479  sumClusterSizeBarrel += recHitIter->clusterSize();
480  h_.clusterSizeBarrel->Fill(recHitIter->clusterSize());
484 
486 
488  } else {
489  ++nRecHitEndcap;
490  sumClusterSizeEndcap += recHitIter->clusterSize();
491  h_.clusterSizeEndcap->Fill(recHitIter->clusterSize());
494 
496 
498  }
499 
500  if (roll->isIRPC()) {
501  h_.timeIRPC->Fill(time);
502  } else {
503  h_.timeCRPC->Fill(time);
504  }
505  }
506  const double nRecHit = nRecHitBarrel + nRecHitEndcap;
507  h_.nRecHitBarrel->Fill(nRecHitBarrel);
508  h_.nRecHitEndcap->Fill(nRecHitEndcap);
509  if (nRecHit > 0) {
510  const int sumClusterSize = sumClusterSizeBarrel + sumClusterSizeEndcap;
511  h_.avgClusterSize->Fill(double(sumClusterSize) / nRecHit);
512 
513  if (nRecHitBarrel > 0) {
514  h_.avgClusterSizeBarrel->Fill(double(sumClusterSizeBarrel) / nRecHitBarrel);
515  }
516  if (nRecHitEndcap > 0) {
517  h_.avgClusterSizeEndcap->Fill(double(sumClusterSizeEndcap) / nRecHitEndcap);
518  }
519  }
520 
521  // Start matching SimHits to RecHits
522  typedef std::map<TrackPSimHitRef, RecHitIter> SimToRecHitMap;
523  SimToRecHitMap simToRecHitMap;
524 
525  for (const auto &simHit : muonSimHits) {
526  const RPCDetId simDetId = static_cast<const RPCDetId>(simHit->detUnitId());
527  // const RPCRoll* simRoll = dynamic_cast<const
528  // RPCRoll*>(rpcGeom->roll(simDetId));
529 
530  const double simX = simHit->localPosition().x();
531 
532  for (RecHitIter recHitIter = recHitHandle->begin(); recHitIter != recHitHandle->end(); ++recHitIter) {
533  const RPCDetId recDetId = static_cast<const RPCDetId>(recHitIter->rpcId());
534  const RPCRoll *recRoll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(recDetId));
535  if (!recRoll)
536  continue;
537 
538  if (simDetId != recDetId)
539  continue;
540 
541  const double recX = recHitIter->localPosition().x();
542  const double newDx = fabs(recX - simX);
543 
544  // Associate SimHit to RecHit
545  SimToRecHitMap::const_iterator prevSimToReco = simToRecHitMap.find(simHit);
546  if (prevSimToReco == simToRecHitMap.end()) {
547  simToRecHitMap.insert(std::make_pair(simHit, recHitIter));
548  } else {
549  const double oldDx = fabs(prevSimToReco->second->localPosition().x() - simX);
550 
551  if (newDx < oldDx) {
552  simToRecHitMap[simHit] = recHitIter;
553  }
554  }
555  }
556  }
557 
558  // Now we have simHit-recHit mapping
559  // So we can fill up relavant histograms
560  int nMatchHitBarrel = 0, nMatchHitEndcap = 0;
561  for (const auto &match : simToRecHitMap) {
562  TrackPSimHitRef simHit = match.first;
563  RecHitIter recHitIter = match.second;
564 
565  const RPCDetId detId = static_cast<const RPCDetId>(simHit->detUnitId());
566  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(detId));
567 
568  const int region = roll->id().region();
569  const int ring = roll->id().ring();
570  // const int sector = roll->id().sector();
571  const int station = roll->id().station();
572  // const int layer = roll->id().layer();
573  // const int subsector = roll->id().subsector();
574 
575  const double simX = simHit->localPosition().x();
576  const double recX = recHitIter->localPosition().x();
577  const double errX = sqrt(recHitIter->localPositionError().xx());
578  const double dX = recX - simX;
579  const double pull = errX == 0 ? -999 : dX / errX;
580 
581  // const GlobalPoint simPos = roll->toGlobal(simHitIter->localPosition());
582  // const GlobalPoint recPos = roll->toGlobal(recHitIter->localPosition());
583 
584  if (region == 0) {
585  ++nMatchHitBarrel;
586  h_.resBarrel->Fill(dX);
587  h_.pullBarrel->Fill(pull);
591 
594  h_.pull_wheel_pull->Fill(ring, pull);
596 
598  } else {
599  ++nMatchHitEndcap;
600  h_.resEndcap->Fill(dX);
601  h_.pullEndcap->Fill(pull);
604 
607  h_.pull_disk_pull->Fill(region * station, pull);
608  h_.pull_ring_pull->Fill(ring, pull);
609 
611  }
612  }
613  h_.nMatchHitBarrel->Fill(nMatchHitBarrel);
614  h_.nMatchHitEndcap->Fill(nMatchHitEndcap);
615 
616  // Reco Muon hits
617  for (reco::MuonCollection::const_iterator muon = muonHandle->begin(); muon != muonHandle->end(); ++muon) {
618  if (!muon->isGlobalMuon())
619  continue;
620 
621  int nRPCHitBarrel = 0;
622  int nRPCHitEndcap = 0;
623 
624  const reco::TrackRef glbTrack = muon->globalTrack();
625  for (trackingRecHit_iterator recHit = glbTrack->recHitsBegin(); recHit != glbTrack->recHitsEnd(); ++recHit) {
626  if (!(*recHit)->isValid())
627  continue;
628  const DetId detId = (*recHit)->geographicalId();
629  if (detId.det() != DetId::Muon or detId.subdetId() != MuonSubdetId::RPC)
630  continue;
631  const RPCDetId rpcDetId = static_cast<const RPCDetId>(detId);
632 
633  if (rpcDetId.region() == 0)
634  ++nRPCHitBarrel;
635  else
636  ++nRPCHitEndcap;
637  }
638 
639  const int nRPCHit = nRPCHitBarrel + nRPCHitEndcap;
640  h_nRPCHitPerRecoMuon->Fill(nRPCHit);
641  if (nRPCHitBarrel and nRPCHitEndcap) {
646  } else if (nRPCHitBarrel) {
648  h_recoMuonBarrel_pt->Fill(muon->pt());
649  h_recoMuonBarrel_eta->Fill(muon->eta());
650  h_recoMuonBarrel_phi->Fill(muon->phi());
651  } else if (nRPCHitEndcap) {
653  h_recoMuonEndcap_pt->Fill(muon->pt());
654  h_recoMuonEndcap_eta->Fill(muon->eta());
655  h_recoMuonEndcap_phi->Fill(muon->phi());
656  } else {
657  h_recoMuonNoRPC_pt->Fill(muon->pt());
658  h_recoMuonNoRPC_eta->Fill(muon->eta());
659  h_recoMuonNoRPC_phi->Fill(muon->phi());
660  }
661  }
662 
663  h_eventCount->Fill(2);
664 }
edm::EDGetTokenT< RecHits > recHitToken_
std::map< int, int > detIdToIndexMapEndcap_
edm::EDGetTokenT< SimHitAssoc > simHitAssocToken_
static bool simHitTPAssociationListGreater(SimHitTPPair i, SimHitTPPair j)
edm::EDGetTokenT< SimParticles > simParticleToken_
MEP h_nRPCHitPerRecoMuonBarrel
std::map< int, int > detIdToIndexMapBarrel_
MEP h_nRPCHitPerSimMuonBarrel
MEP h_nRPCHitPerSimMuonOverlap
MEP h_matchOccupancyBarrel_detId
MEP h_allOccupancyEndcap_detId
void Fill(long long x)
C::const_iterator const_iterator
constant access iterator type
Definition: RangeMap.h:43
MEP h_matchOccupancyEndcap_detId
MEP h_allOccupancyBarrel_detId
edm::ESGetToken< RPCGeometry, MuonGeometryRecord > rpcGeomToken_
T sqrt(T t)
Definition: SSEVec.h:19
MEP h_nRPCHitPerSimMuonEndcap
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
MEP h_nRPCHitPerRecoMuonEndcap
RPCValidHistograms h_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
Log< level::Info, false > LogInfo
MEP h_nRPCHitPerRecoMuonOverlap
Definition: DetId.h:17
float dX(const MatchPair &match)
MEP h_refOccupancyBarrel_detId
static constexpr int RPC
Definition: MuonSubdetId.h:13
int region() const
Region id: 0 for Barrel, +/-1 For +/- Endcap.
Definition: RPCDetId.h:53
edm::EDGetTokenT< reco::MuonCollection > muonToken_
MEP h_refOccupancyEndcap_detId
edm::Ref< edm::PSimHitContainer > TrackPSimHitRef
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
Definition: Utils.h:10
edm::EDGetTokenT< SimHits > simHitToken_
Definition: event.py:1

◆ bookHistograms()

void RPCRecHitValid::bookHistograms ( DQMStore::IBooker booker,
edm::Run const &  run,
edm::EventSetup const &  eventSetup 
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 36 of file RPCRecHitValid.cc.

References custom_jme_cff::area, dqm::implementation::IBooker::book1D(), dqm::implementation::IBooker::bookProfile(), TrackValidation_cff::e5, options_cfi::eventSetup, dqm::legacy::MonitorElement::getTH1(), h, HLTTauDQMOffline_cfi::nPtBins, StripTopology::nstrips(), Pi, StripTopology::pitch(), l1tEGammaCrystalsEmulatorProducer_cfi::ptBins, nano_mu_digi_cff::rawId, nano_mu_digi_cff::roll, RPCChamber::rolls(), dqm::implementation::NavigatorBase::setCurrentFolder(), and StripTopology::stripLength().

36  {
37  // Book MonitorElements
38  h_.bookHistograms(booker, subDir_);
39 
40  // SimHit plots, not compatible to RPCPoint-RPCRecHit comparison
41  booker.setCurrentFolder(subDir_ + "/HitProperty");
42  h_simParticleType = booker.book1D("SimHitPType", "SimHit particle type", 11, 0, 11);
43  h_simParticleType->getTH1()->SetMinimum(0);
44  if (TH1 *h = h_simParticleType->getTH1()) {
45  h->GetXaxis()->SetBinLabel(1, "#mu^{-}");
46  h->GetXaxis()->SetBinLabel(2, "#mu^{+}");
47  h->GetXaxis()->SetBinLabel(3, "e^{-}");
48  h->GetXaxis()->SetBinLabel(4, "e^{+}");
49  h->GetXaxis()->SetBinLabel(5, "#pi^{+}");
50  h->GetXaxis()->SetBinLabel(6, "#pi^{-}");
51  h->GetXaxis()->SetBinLabel(7, "K^{+}");
52  h->GetXaxis()->SetBinLabel(8, "K^{-}");
53  h->GetXaxis()->SetBinLabel(9, "p^{+}");
54  h->GetXaxis()->SetBinLabel(10, "p^{-}");
55  h->GetXaxis()->SetBinLabel(11, "Other");
56  }
57 
58  booker.setCurrentFolder(subDir_ + "/Track");
59 
60  h_nRPCHitPerSimMuon = booker.book1D("NRPCHitPerSimMuon", "Number of RPC SimHit per SimMuon", 11, -0.5, 10.5);
62  booker.book1D("NRPCHitPerSimMuonBarrel", "Number of RPC SimHit per SimMuon", 11, -0.5, 10.5);
64  booker.book1D("NRPCHitPerSimMuonOverlap", "Number of RPC SimHit per SimMuon", 11, -0.5, 10.5);
66  booker.book1D("NRPCHitPerSimMuonEndcap", "Number of RPC SimHit per SimMuon", 11, -0.5, 10.5);
67 
68  h_nRPCHitPerRecoMuon = booker.book1D("NRPCHitPerRecoMuon", "Number of RPC RecHit per RecoMuon", 11, -0.5, 10.5);
70  booker.book1D("NRPCHitPerRecoMuonBarrel", "Number of RPC RecHit per RecoMuon", 11, -0.5, 10.5);
72  booker.book1D("NRPCHitPerRecoMuonOverlap", "Number of RPC RecHit per RecoMuon", 11, -0.5, 10.5);
74  booker.book1D("NRPCHitPerRecoMuonEndcap", "Number of RPC RecHit per RecoMuon", 11, -0.5, 10.5);
75 
76  h_nRPCHitPerSimMuon->getTH1()->SetMinimum(0);
77  h_nRPCHitPerSimMuonBarrel->getTH1()->SetMinimum(0);
78  h_nRPCHitPerSimMuonOverlap->getTH1()->SetMinimum(0);
79  h_nRPCHitPerSimMuonEndcap->getTH1()->SetMinimum(0);
80 
81  h_nRPCHitPerRecoMuon->getTH1()->SetMinimum(0);
82  h_nRPCHitPerRecoMuonBarrel->getTH1()->SetMinimum(0);
83  h_nRPCHitPerRecoMuonOverlap->getTH1()->SetMinimum(0);
84  h_nRPCHitPerRecoMuonEndcap->getTH1()->SetMinimum(0);
85 
86  float ptBins[] = {0, 1, 2, 5, 10, 20, 30, 50, 100, 200, 300, 500};
87  const int nPtBins = sizeof(ptBins) / sizeof(float) - 1;
89  booker.book1D("SimMuonBarrel_pt", "SimMuon RPCHit in Barrel p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
91  booker.book1D("SimMuonOverlap_pt", "SimMuon RPCHit in Overlap p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
93  booker.book1D("SimMuonEndcap_pt", "SimMuon RPCHit in Endcap p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
95  booker.book1D("SimMuonNoRPC_pt", "SimMuon without RPCHit p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
96  h_simMuonBarrel_eta = booker.book1D("SimMuonBarrel_eta", "SimMuon RPCHit in Barrel #eta;#eta", 50, -2.5, 2.5);
97  h_simMuonOverlap_eta = booker.book1D("SimMuonOverlap_eta", "SimMuon RPCHit in Overlap #eta;#eta", 50, -2.5, 2.5);
98  h_simMuonEndcap_eta = booker.book1D("SimMuonEndcap_eta", "SimMuon RPCHit in Endcap #eta;#eta", 50, -2.5, 2.5);
99  h_simMuonNoRPC_eta = booker.book1D("SimMuonNoRPC_eta", "SimMuon without RPCHit #eta;#eta", 50, -2.5, 2.5);
101  booker.book1D("SimMuonBarrel_phi", "SimMuon RPCHit in Barrel #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
103  booker.book1D("SimMuonOverlap_phi", "SimMuon RPCHit in Overlap #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
105  booker.book1D("SimMuonEndcap_phi", "SimMuon RPCHit in Endcap #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
107  booker.book1D("SimMuonNoRPC_phi", "SimMuon without RPCHit #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
108 
110  booker.book1D("RecoMuonBarrel_pt", "RecoMuon RPCHit in Barrel p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
112  booker.book1D("RecoMuonOverlap_pt", "RecoMuon RPCHit in Overlap p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
114  booker.book1D("RecoMuonEndcap_pt", "RecoMuon RPCHit in Endcap p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
116  booker.book1D("RecoMuonNoRPC_pt", "RecoMuon without RPCHit p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
117  h_recoMuonBarrel_eta = booker.book1D("RecoMuonBarrel_eta", "RecoMuon RPCHit in Barrel #eta;#eta", 50, -2.5, 2.5);
118  h_recoMuonOverlap_eta = booker.book1D("RecoMuonOverlap_eta", "RecoMuon RPCHit in Overlap #eta;#eta", 50, -2.5, 2.5);
119  h_recoMuonEndcap_eta = booker.book1D("RecoMuonEndcap_eta", "RecoMuon RPCHit in Endcap #eta;#eta", 50, -2.5, 2.5);
120  h_recoMuonNoRPC_eta = booker.book1D("RecoMuonNoRPC_eta", "RecoMuon without RPCHit #eta;#eta", 50, -2.5, 2.5);
122  booker.book1D("RecoMuonBarrel_phi", "RecoMuon RPCHit in Barrel #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
124  booker.book1D("RecoMuonOverlap_phi", "RecoMuon RPCHit in Overlap #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
126  booker.book1D("RecoMuonEndcap_phi", "RecoMuon RPCHit in Endcap #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
128  booker.book1D("RecoMuonNoRPC_phi", "RecoMuon without RPCHit #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
129 
130  h_simMuonBarrel_pt->getTH1()->SetMinimum(0);
131  h_simMuonOverlap_pt->getTH1()->SetMinimum(0);
132  h_simMuonEndcap_pt->getTH1()->SetMinimum(0);
133  h_simMuonNoRPC_pt->getTH1()->SetMinimum(0);
134  h_simMuonBarrel_eta->getTH1()->SetMinimum(0);
135  h_simMuonOverlap_eta->getTH1()->SetMinimum(0);
136  h_simMuonEndcap_eta->getTH1()->SetMinimum(0);
137  h_simMuonNoRPC_eta->getTH1()->SetMinimum(0);
138  h_simMuonBarrel_phi->getTH1()->SetMinimum(0);
139  h_simMuonOverlap_phi->getTH1()->SetMinimum(0);
140  h_simMuonEndcap_phi->getTH1()->SetMinimum(0);
141  h_simMuonNoRPC_phi->getTH1()->SetMinimum(0);
142 
143  h_recoMuonBarrel_pt->getTH1()->SetMinimum(0);
144  h_recoMuonOverlap_pt->getTH1()->SetMinimum(0);
145  h_recoMuonEndcap_pt->getTH1()->SetMinimum(0);
146  h_recoMuonNoRPC_pt->getTH1()->SetMinimum(0);
147  h_recoMuonBarrel_eta->getTH1()->SetMinimum(0);
148  h_recoMuonOverlap_eta->getTH1()->SetMinimum(0);
149  h_recoMuonEndcap_eta->getTH1()->SetMinimum(0);
150  h_recoMuonNoRPC_eta->getTH1()->SetMinimum(0);
151  h_recoMuonBarrel_phi->getTH1()->SetMinimum(0);
152  h_recoMuonOverlap_phi->getTH1()->SetMinimum(0);
153  h_recoMuonEndcap_phi->getTH1()->SetMinimum(0);
154  h_recoMuonNoRPC_phi->getTH1()->SetMinimum(0);
155 
156  booker.setCurrentFolder(subDir_ + "/Occupancy");
157 
158  h_eventCount = booker.book1D("EventCount", "Event count", 3, 1, 4);
159  h_eventCount->getTH1()->SetMinimum(0);
160  if (h_eventCount) {
161  TH1 *h = h_eventCount->getTH1();
162  h->GetXaxis()->SetBinLabel(1, "eventBegin");
163  h->GetXaxis()->SetBinLabel(2, "eventEnd");
164  h->GetXaxis()->SetBinLabel(3, "run");
165  }
166  h_eventCount->Fill(3);
167 
168  // Book roll-by-roll histograms
169  auto rpcGeom = eventSetup.getHandle(rpcGeomTokenInRun_);
170 
171  int nRPCRollBarrel = 0, nRPCRollEndcap = 0;
172 
173  TrackingGeometry::DetContainer rpcDets = rpcGeom->dets();
174  for (auto det : rpcDets) {
175  auto rpcCh = dynamic_cast<const RPCChamber *>(det);
176  if (!rpcCh)
177  continue;
178 
179  std::vector<const RPCRoll *> rolls = rpcCh->rolls();
180  for (auto roll : rolls) {
181  if (!roll)
182  continue;
183 
184  // RPCGeomServ rpcSrv(roll->id());
185  const int rawId = roll->geographicalId().rawId();
186  // if ( !roll->specs()->isRPC() ) { cout << "\nNoRPC : " << rpcSrv.name()
187  // << ' ' << rawId << endl; continue; }
188 
189  if (roll->isBarrel()) {
190  detIdToIndexMapBarrel_[rawId] = nRPCRollBarrel;
191  // rollIdToNameMapBarrel_[rawId] = rpcSrv.name();
192  ++nRPCRollBarrel;
193  } else {
194  detIdToIndexMapEndcap_[rawId] = nRPCRollEndcap;
195  // rollIdToNameMapEndcap_[rawId] = rpcSrv.name();
196  ++nRPCRollEndcap;
197  }
198  }
199  }
200 
201  booker.setCurrentFolder(subDir_ + "/Occupancy");
202  h_matchOccupancyBarrel_detId = booker.book1D("MatchOccupancyBarrel_detId",
203  "Matched hit occupancy;roll index (can be arbitrary)",
204  nRPCRollBarrel,
205  0,
206  nRPCRollBarrel);
207  h_matchOccupancyEndcap_detId = booker.book1D("MatchOccupancyEndcap_detId",
208  "Matched hit occupancy;roll index (can be arbitrary)",
209  nRPCRollEndcap,
210  0,
211  nRPCRollEndcap);
212  h_refOccupancyBarrel_detId = booker.book1D("RefOccupancyBarrel_detId",
213  "Reference hit occupancy;roll index (can be arbitrary)",
214  nRPCRollBarrel,
215  0,
216  nRPCRollBarrel);
217  h_refOccupancyEndcap_detId = booker.book1D("RefOccupancyEndcap_detId",
218  "Reference hit occupancy;roll index (can be arbitrary)",
219  nRPCRollEndcap,
220  0,
221  nRPCRollEndcap);
223  "OccupancyBarrel_detId", "Occupancy;roll index (can be arbitrary)", nRPCRollBarrel, 0, nRPCRollBarrel);
225  "OccupancyEndcap_detId", "Occupancy;roll index (can be arbitrary)", nRPCRollEndcap, 0, nRPCRollEndcap);
226 
227  h_matchOccupancyBarrel_detId->getTH1()->SetMinimum(0);
228  h_matchOccupancyEndcap_detId->getTH1()->SetMinimum(0);
229  h_refOccupancyBarrel_detId->getTH1()->SetMinimum(0);
230  h_refOccupancyEndcap_detId->getTH1()->SetMinimum(0);
231  h_allOccupancyBarrel_detId->getTH1()->SetMinimum(0);
232  h_allOccupancyEndcap_detId->getTH1()->SetMinimum(0);
233 
235  "RollAreaBarrel_detId", "Roll area;roll index;Area", nRPCRollBarrel, 0., 1. * nRPCRollBarrel, 0., 1e5);
237  "RollAreaEndcap_detId", "Roll area;roll index;Area", nRPCRollEndcap, 0., 1. * nRPCRollEndcap, 0., 1e5);
238 
239  for (auto detIdToIndex : detIdToIndexMapBarrel_) {
240  const int rawId = detIdToIndex.first;
241  const int index = detIdToIndex.second;
242 
243  const RPCDetId rpcDetId = static_cast<const RPCDetId>(rawId);
244  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(rpcDetId));
245 
246  // RPCGeomServ rpcSrv(roll->id());
247  // if ( !roll->specs()->isRPC() ) { cout << "\nNoRPC : " << rpcSrv.name() <<
248  // ' ' << rawId << endl; continue; }
249 
250  const StripTopology &topol = roll->specificTopology();
251  const double area = topol.stripLength() * topol.nstrips() * topol.pitch();
252 
254  }
255 
256  for (auto detIdToIndex : detIdToIndexMapEndcap_) {
257  const int rawId = detIdToIndex.first;
258  const int index = detIdToIndex.second;
259 
260  const RPCDetId rpcDetId = static_cast<const RPCDetId>(rawId);
261  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(rpcDetId));
262 
263  // RPCGeomServ rpcSrv(roll->id());
264  // if ( !roll->specs()->isRPC() ) { cout << "\nNoRPC : " << rpcSrv.name() <<
265  // ' ' << rawId << endl; continue; }
266 
267  const StripTopology &topol = roll->specificTopology();
268  const double area = topol.stripLength() * topol.nstrips() * topol.pitch();
269 
271  }
272 }
const double Pi
virtual int nstrips() const =0
std::map< int, int > detIdToIndexMapEndcap_
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MEP h_nRPCHitPerRecoMuonBarrel
std::map< int, int > detIdToIndexMapBarrel_
MEP h_nRPCHitPerSimMuonBarrel
MEP h_nRPCHitPerSimMuonOverlap
MEP h_matchOccupancyBarrel_detId
void bookHistograms(DQMStore::IBooker &booker, const std::string &subDir)
MEP h_allOccupancyEndcap_detId
void Fill(long long x)
std::vector< const GeomDet * > DetContainer
virtual float stripLength() const =0
MEP h_matchOccupancyEndcap_detId
MEP h_allOccupancyBarrel_detId
MEP h_rollAreaEndcap_detId
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:408
MEP h_rollAreaBarrel_detId
MEP h_nRPCHitPerSimMuonEndcap
MEP h_nRPCHitPerRecoMuonEndcap
RPCValidHistograms h_
edm::ESGetToken< RPCGeometry, MuonGeometryRecord > rpcGeomTokenInRun_
MEP h_nRPCHitPerRecoMuonOverlap
MEP h_refOccupancyBarrel_detId
std::string subDir_
virtual float pitch() const =0
MEP h_refOccupancyEndcap_detId
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
const std::vector< const RPCRoll * > & rolls() const
Return the Rolls.
Definition: RPCChamber.cc:40

Member Data Documentation

◆ detIdToIndexMapBarrel_

std::map<int, int> RPCRecHitValid::detIdToIndexMapBarrel_
private

Definition at line 74 of file RPCRecHitValid.h.

◆ detIdToIndexMapEndcap_

std::map<int, int> RPCRecHitValid::detIdToIndexMapEndcap_
private

Definition at line 74 of file RPCRecHitValid.h.

◆ h_

RPCValidHistograms RPCRecHitValid::h_
private

Definition at line 51 of file RPCRecHitValid.h.

◆ h_allOccupancyBarrel_detId

MEP RPCRecHitValid::h_allOccupancyBarrel_detId
private

Definition at line 69 of file RPCRecHitValid.h.

◆ h_allOccupancyEndcap_detId

MEP RPCRecHitValid::h_allOccupancyEndcap_detId
private

Definition at line 70 of file RPCRecHitValid.h.

◆ h_eventCount

MEP RPCRecHitValid::h_eventCount
private

Definition at line 53 of file RPCRecHitValid.h.

◆ h_matchOccupancyBarrel_detId

MEP RPCRecHitValid::h_matchOccupancyBarrel_detId
private

Definition at line 65 of file RPCRecHitValid.h.

◆ h_matchOccupancyEndcap_detId

MEP RPCRecHitValid::h_matchOccupancyEndcap_detId
private

Definition at line 66 of file RPCRecHitValid.h.

◆ h_nRPCHitPerRecoMuon

MEP RPCRecHitValid::h_nRPCHitPerRecoMuon
private

Definition at line 56 of file RPCRecHitValid.h.

◆ h_nRPCHitPerRecoMuonBarrel

MEP RPCRecHitValid::h_nRPCHitPerRecoMuonBarrel
private

Definition at line 56 of file RPCRecHitValid.h.

◆ h_nRPCHitPerRecoMuonEndcap

MEP RPCRecHitValid::h_nRPCHitPerRecoMuonEndcap
private

Definition at line 56 of file RPCRecHitValid.h.

◆ h_nRPCHitPerRecoMuonOverlap

MEP RPCRecHitValid::h_nRPCHitPerRecoMuonOverlap
private

Definition at line 56 of file RPCRecHitValid.h.

◆ h_nRPCHitPerSimMuon

MEP RPCRecHitValid::h_nRPCHitPerSimMuon
private

Definition at line 55 of file RPCRecHitValid.h.

◆ h_nRPCHitPerSimMuonBarrel

MEP RPCRecHitValid::h_nRPCHitPerSimMuonBarrel
private

Definition at line 55 of file RPCRecHitValid.h.

◆ h_nRPCHitPerSimMuonEndcap

MEP RPCRecHitValid::h_nRPCHitPerSimMuonEndcap
private

Definition at line 55 of file RPCRecHitValid.h.

◆ h_nRPCHitPerSimMuonOverlap

MEP RPCRecHitValid::h_nRPCHitPerSimMuonOverlap
private

Definition at line 55 of file RPCRecHitValid.h.

◆ h_recoMuonBarrel_eta

MEP RPCRecHitValid::h_recoMuonBarrel_eta
private

Definition at line 61 of file RPCRecHitValid.h.

◆ h_recoMuonBarrel_phi

MEP RPCRecHitValid::h_recoMuonBarrel_phi
private

Definition at line 62 of file RPCRecHitValid.h.

◆ h_recoMuonBarrel_pt

MEP RPCRecHitValid::h_recoMuonBarrel_pt
private

Definition at line 60 of file RPCRecHitValid.h.

◆ h_recoMuonEndcap_eta

MEP RPCRecHitValid::h_recoMuonEndcap_eta
private

Definition at line 61 of file RPCRecHitValid.h.

◆ h_recoMuonEndcap_phi

MEP RPCRecHitValid::h_recoMuonEndcap_phi
private

Definition at line 62 of file RPCRecHitValid.h.

◆ h_recoMuonEndcap_pt

MEP RPCRecHitValid::h_recoMuonEndcap_pt
private

Definition at line 60 of file RPCRecHitValid.h.

◆ h_recoMuonNoRPC_eta

MEP RPCRecHitValid::h_recoMuonNoRPC_eta
private

Definition at line 61 of file RPCRecHitValid.h.

◆ h_recoMuonNoRPC_phi

MEP RPCRecHitValid::h_recoMuonNoRPC_phi
private

Definition at line 62 of file RPCRecHitValid.h.

◆ h_recoMuonNoRPC_pt

MEP RPCRecHitValid::h_recoMuonNoRPC_pt
private

Definition at line 60 of file RPCRecHitValid.h.

◆ h_recoMuonOverlap_eta

MEP RPCRecHitValid::h_recoMuonOverlap_eta
private

Definition at line 61 of file RPCRecHitValid.h.

◆ h_recoMuonOverlap_phi

MEP RPCRecHitValid::h_recoMuonOverlap_phi
private

Definition at line 62 of file RPCRecHitValid.h.

◆ h_recoMuonOverlap_pt

MEP RPCRecHitValid::h_recoMuonOverlap_pt
private

Definition at line 60 of file RPCRecHitValid.h.

◆ h_refOccupancyBarrel_detId

MEP RPCRecHitValid::h_refOccupancyBarrel_detId
private

Definition at line 67 of file RPCRecHitValid.h.

◆ h_refOccupancyEndcap_detId

MEP RPCRecHitValid::h_refOccupancyEndcap_detId
private

Definition at line 68 of file RPCRecHitValid.h.

◆ h_rollAreaBarrel_detId

MEP RPCRecHitValid::h_rollAreaBarrel_detId
private

Definition at line 71 of file RPCRecHitValid.h.

◆ h_rollAreaEndcap_detId

MEP RPCRecHitValid::h_rollAreaEndcap_detId
private

Definition at line 72 of file RPCRecHitValid.h.

◆ h_simMuonBarrel_eta

MEP RPCRecHitValid::h_simMuonBarrel_eta
private

Definition at line 58 of file RPCRecHitValid.h.

◆ h_simMuonBarrel_phi

MEP RPCRecHitValid::h_simMuonBarrel_phi
private

Definition at line 59 of file RPCRecHitValid.h.

◆ h_simMuonBarrel_pt

MEP RPCRecHitValid::h_simMuonBarrel_pt
private

Definition at line 57 of file RPCRecHitValid.h.

◆ h_simMuonEndcap_eta

MEP RPCRecHitValid::h_simMuonEndcap_eta
private

Definition at line 58 of file RPCRecHitValid.h.

◆ h_simMuonEndcap_phi

MEP RPCRecHitValid::h_simMuonEndcap_phi
private

Definition at line 59 of file RPCRecHitValid.h.

◆ h_simMuonEndcap_pt

MEP RPCRecHitValid::h_simMuonEndcap_pt
private

Definition at line 57 of file RPCRecHitValid.h.

◆ h_simMuonNoRPC_eta

MEP RPCRecHitValid::h_simMuonNoRPC_eta
private

Definition at line 58 of file RPCRecHitValid.h.

◆ h_simMuonNoRPC_phi

MEP RPCRecHitValid::h_simMuonNoRPC_phi
private

Definition at line 59 of file RPCRecHitValid.h.

◆ h_simMuonNoRPC_pt

MEP RPCRecHitValid::h_simMuonNoRPC_pt
private

Definition at line 57 of file RPCRecHitValid.h.

◆ h_simMuonOverlap_eta

MEP RPCRecHitValid::h_simMuonOverlap_eta
private

Definition at line 58 of file RPCRecHitValid.h.

◆ h_simMuonOverlap_phi

MEP RPCRecHitValid::h_simMuonOverlap_phi
private

Definition at line 59 of file RPCRecHitValid.h.

◆ h_simMuonOverlap_pt

MEP RPCRecHitValid::h_simMuonOverlap_pt
private

Definition at line 57 of file RPCRecHitValid.h.

◆ h_simParticleType

MEP RPCRecHitValid::h_simParticleType
private

Definition at line 63 of file RPCRecHitValid.h.

◆ h_simParticleTypeBarrel

MEP RPCRecHitValid::h_simParticleTypeBarrel
private

Definition at line 63 of file RPCRecHitValid.h.

◆ h_simParticleTypeEndcap

MEP RPCRecHitValid::h_simParticleTypeEndcap
private

Definition at line 63 of file RPCRecHitValid.h.

◆ muonToken_

edm::EDGetTokenT<reco::MuonCollection> RPCRecHitValid::muonToken_
private

Definition at line 45 of file RPCRecHitValid.h.

◆ recHitToken_

edm::EDGetTokenT<RecHits> RPCRecHitValid::recHitToken_
private

Definition at line 42 of file RPCRecHitValid.h.

◆ rpcGeomToken_

edm::ESGetToken<RPCGeometry, MuonGeometryRecord> RPCRecHitValid::rpcGeomToken_
private

Definition at line 47 of file RPCRecHitValid.h.

◆ rpcGeomTokenInRun_

edm::ESGetToken<RPCGeometry, MuonGeometryRecord> RPCRecHitValid::rpcGeomTokenInRun_
private

Definition at line 48 of file RPCRecHitValid.h.

◆ simHitAssocToken_

edm::EDGetTokenT<SimHitAssoc> RPCRecHitValid::simHitAssocToken_
private

Definition at line 44 of file RPCRecHitValid.h.

◆ simHitToken_

edm::EDGetTokenT<SimHits> RPCRecHitValid::simHitToken_
private

Definition at line 41 of file RPCRecHitValid.h.

◆ simParticleToken_

edm::EDGetTokenT<SimParticles> RPCRecHitValid::simParticleToken_
private

Definition at line 43 of file RPCRecHitValid.h.

◆ subDir_

std::string RPCRecHitValid::subDir_
private

Definition at line 40 of file RPCRecHitValid.h.