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 24 of file RPCRecHitValid.cc.

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

24  {
25  simHitToken_ = consumes<SimHits>(pset.getParameter<edm::InputTag>("simHit"));
26  recHitToken_ = consumes<RecHits>(pset.getParameter<edm::InputTag>("recHit"));
27  simParticleToken_ = consumes<SimParticles>(pset.getParameter<edm::InputTag>("simTrack"));
28  simHitAssocToken_ = consumes<SimHitAssoc>(pset.getParameter<edm::InputTag>("simHitAssoc"));
29  muonToken_ = consumes<reco::MuonCollection>(pset.getParameter<edm::InputTag>("muon"));
30 
31  subDir_ = pset.getParameter<std::string>("subDir");
32 
34  rpcGeomTokenInRun_ = esConsumes<edm::Transition::BeginRun>();
35 }
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 262 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.

262  {
263  h_eventCount->Fill(1);
264 
265  // Get the RPC Geometry
266  auto rpcGeom = eventSetup.getHandle(rpcGeomToken_);
267 
268  // Retrieve SimHits from the event
270  if (!event.getByToken(simHitToken_, simHitHandle)) {
271  edm::LogInfo("RPCRecHitValid") << "Cannot find simHit collection\n";
272  return;
273  }
274 
275  // Retrieve RecHits from the event
277  if (!event.getByToken(recHitToken_, recHitHandle)) {
278  edm::LogInfo("RPCRecHitValid") << "Cannot find recHit collection\n";
279  return;
280  }
281 
282  // Get SimParticles
283  edm::Handle<TrackingParticleCollection> simParticleHandle;
284  if (!event.getByToken(simParticleToken_, simParticleHandle)) {
285  edm::LogInfo("RPCRecHitValid") << "Cannot find TrackingParticle collection\n";
286  return;
287  }
288 
289  // Get SimParticle to SimHit association map
291  if (!event.getByToken(simHitAssocToken_, simHitsTPAssoc)) {
292  edm::LogInfo("RPCRecHitValid") << "Cannot find TrackingParticle to SimHit association map\n";
293  return;
294  }
295 
296  // Get RecoMuons
298  if (!event.getByToken(muonToken_, muonHandle)) {
299  edm::LogInfo("RPCRecHitValid") << "Cannot find muon collection\n";
300  return;
301  }
302 
303  typedef edm::PSimHitContainer::const_iterator SimHitIter;
304  typedef RPCRecHitCollection::const_iterator RecHitIter;
305  typedef std::vector<TrackPSimHitRef> SimHitRefs;
306 
307  // TrackingParticles with (and without) RPC simHits
308  SimHitRefs muonSimHits;
309 
310  for (int i = 0, n = simParticleHandle->size(); i < n; ++i) {
311  TrackingParticleRef simParticle(simParticleHandle, i);
312  if (simParticle->pt() < 1.0 or simParticle->p() < 2.5)
313  continue; // globalMuon acceptance
314 
315  // Collect SimHits from this Tracking Particle
316  SimHitRefs simHitsFromParticle;
317  auto range = std::equal_range(simHitsTPAssoc->begin(),
318  simHitsTPAssoc->end(),
319  std::make_pair(simParticle, TrackPSimHitRef()),
321  for (auto simParticleToHit = range.first; simParticleToHit != range.second; ++simParticleToHit) {
322  auto simHit = simParticleToHit->second;
323  const DetId detId(simHit->detUnitId());
324  if (detId.det() != DetId::Muon or detId.subdetId() != MuonSubdetId::RPC)
325  continue;
326 
327  simHitsFromParticle.push_back(simParticleToHit->second);
328  }
329  const int nRPCHit = simHitsFromParticle.size();
330  const bool hasRPCHit = nRPCHit > 0;
331 
332  if (abs(simParticle->pdgId()) == 13) {
333  muonSimHits.insert(muonSimHits.end(), simHitsFromParticle.begin(), simHitsFromParticle.end());
334 
335  // Count number of Barrel hits and Endcap hits
336  int nRPCHitBarrel = 0;
337  int nRPCHitEndcap = 0;
338  for (const auto &simHit : simHitsFromParticle) {
339  const RPCDetId rpcDetId{simHit->detUnitId()};
340  const RPCRoll *roll = rpcGeom->roll(rpcDetId);
341  if (!roll)
342  continue;
343 
344  if (rpcDetId.region() == 0)
345  ++nRPCHitBarrel;
346  else
347  ++nRPCHitEndcap;
348  }
349 
350  // Fill TrackingParticle related histograms
351  h_nRPCHitPerSimMuon->Fill(nRPCHit);
352  if (nRPCHitBarrel and nRPCHitEndcap) {
354  h_simMuonOverlap_pt->Fill(simParticle->pt());
355  h_simMuonOverlap_eta->Fill(simParticle->eta());
356  h_simMuonOverlap_phi->Fill(simParticle->phi());
357  } else if (nRPCHitBarrel) {
359  h_simMuonBarrel_pt->Fill(simParticle->pt());
360  h_simMuonBarrel_eta->Fill(simParticle->eta());
361  h_simMuonBarrel_phi->Fill(simParticle->phi());
362  } else if (nRPCHitEndcap) {
364  h_simMuonEndcap_pt->Fill(simParticle->pt());
365  h_simMuonEndcap_eta->Fill(simParticle->eta());
366  h_simMuonEndcap_phi->Fill(simParticle->phi());
367  } else {
368  h_simMuonNoRPC_pt->Fill(simParticle->pt());
369  h_simMuonNoRPC_eta->Fill(simParticle->eta());
370  h_simMuonNoRPC_phi->Fill(simParticle->phi());
371  }
372  }
373 
374  if (hasRPCHit) {
375  switch (simParticle->pdgId()) {
376  case 13:
378  break;
379  case -13:
381  break;
382  case 11:
384  break;
385  case -11:
387  break;
388  case 211:
390  break;
391  case -211:
393  break;
394  case 321:
396  break;
397  case -321:
399  break;
400  case 2212:
402  break;
403  case -2212:
405  break;
406  default:
407  h_simParticleType->Fill(10);
408  break;
409  }
410  }
411  }
412 
413  // Loop over muon simHits, fill histograms which does not need associations
414  int nRefHitBarrel = 0, nRefHitEndcap = 0;
415  for (const auto &simHit : muonSimHits) {
416  const RPCDetId detId = static_cast<const RPCDetId>(simHit->detUnitId());
417  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(detId));
418 
419  const int region = roll->id().region();
420  const int ring = roll->id().ring();
421  const int station = roll->id().station();
422 
423  if (region == 0) {
424  ++nRefHitBarrel;
428 
430  } else {
431  ++nRefHitEndcap;
434 
436  }
437  }
438 
439  h_.nRefHitBarrel->Fill(nRefHitBarrel);
440  h_.nRefHitEndcap->Fill(nRefHitEndcap);
441 
442  // Loop over recHits, fill histograms which does not need associations
443  int sumClusterSizeBarrel = 0, sumClusterSizeEndcap = 0;
444  int nRecHitBarrel = 0, nRecHitEndcap = 0;
445  for (RecHitIter recHitIter = recHitHandle->begin(); recHitIter != recHitHandle->end(); ++recHitIter) {
446  const RPCDetId detId = static_cast<const RPCDetId>(recHitIter->rpcId());
447  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(detId()));
448  if (!roll)
449  continue;
450 
451  const int region = roll->id().region();
452  const int ring = roll->id().ring();
453  const int station = roll->id().station();
454 
455  const double time = recHitIter->timeError() >= 0 ? recHitIter->time() : recHitIter->BunchX() * 25;
456 
457  h_.clusterSize->Fill(recHitIter->clusterSize());
458 
459  if (region == 0) {
460  ++nRecHitBarrel;
461  sumClusterSizeBarrel += recHitIter->clusterSize();
462  h_.clusterSizeBarrel->Fill(recHitIter->clusterSize());
466 
468 
470  } else {
471  ++nRecHitEndcap;
472  sumClusterSizeEndcap += recHitIter->clusterSize();
473  h_.clusterSizeEndcap->Fill(recHitIter->clusterSize());
476 
478 
480  }
481 
482  if (roll->isIRPC()) {
483  h_.timeIRPC->Fill(time);
484  } else {
485  h_.timeCRPC->Fill(time);
486  }
487  }
488  const double nRecHit = nRecHitBarrel + nRecHitEndcap;
489  h_.nRecHitBarrel->Fill(nRecHitBarrel);
490  h_.nRecHitEndcap->Fill(nRecHitEndcap);
491  if (nRecHit > 0) {
492  const int sumClusterSize = sumClusterSizeBarrel + sumClusterSizeEndcap;
493  h_.avgClusterSize->Fill(double(sumClusterSize) / nRecHit);
494 
495  if (nRecHitBarrel > 0) {
496  h_.avgClusterSizeBarrel->Fill(double(sumClusterSizeBarrel) / nRecHitBarrel);
497  }
498  if (nRecHitEndcap > 0) {
499  h_.avgClusterSizeEndcap->Fill(double(sumClusterSizeEndcap) / nRecHitEndcap);
500  }
501  }
502 
503  // Start matching SimHits to RecHits
504  typedef std::map<TrackPSimHitRef, RecHitIter> SimToRecHitMap;
505  SimToRecHitMap simToRecHitMap;
506 
507  for (const auto &simHit : muonSimHits) {
508  const RPCDetId simDetId{simHit->detUnitId()};
509 
510  const double simX = simHit->localPosition().x();
511 
512  for (RecHitIter recHitIter = recHitHandle->begin(); recHitIter != recHitHandle->end(); ++recHitIter) {
513  const RPCDetId recDetId{recHitIter->rpcId()};
514  const RPCRoll *recRoll = rpcGeom->roll(recDetId);
515  if (!recRoll)
516  continue;
517 
518  if (simDetId != recDetId)
519  continue;
520 
521  const double recX = recHitIter->localPosition().x();
522  const double newDx = fabs(recX - simX);
523 
524  // Associate SimHit to RecHit
525  SimToRecHitMap::const_iterator prevSimToReco = simToRecHitMap.find(simHit);
526  if (prevSimToReco == simToRecHitMap.end()) {
527  simToRecHitMap.insert(std::make_pair(simHit, recHitIter));
528  } else {
529  const double oldDx = fabs(prevSimToReco->second->localPosition().x() - simX);
530 
531  if (newDx < oldDx) {
532  simToRecHitMap[simHit] = recHitIter;
533  }
534  }
535  }
536  }
537 
538  // Now we have simHit-recHit mapping
539  // So we can fill up relavant histograms
540  int nMatchHitBarrel = 0, nMatchHitEndcap = 0;
541  for (const auto &match : simToRecHitMap) {
542  TrackPSimHitRef simHit = match.first;
543  RecHitIter recHitIter = match.second;
544 
545  const RPCDetId detId = static_cast<const RPCDetId>(simHit->detUnitId());
546  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(detId));
547 
548  const int region = roll->id().region();
549  const int ring = roll->id().ring();
550  const int station = roll->id().station();
551 
552  const double simX = simHit->localPosition().x();
553  const double recX = recHitIter->localPosition().x();
554  const double errX = sqrt(recHitIter->localPositionError().xx());
555  const double dX = recX - simX;
556  const double pull = errX == 0 ? -999 : dX / errX;
557 
558  if (region == 0) {
559  ++nMatchHitBarrel;
560  h_.resBarrel->Fill(dX);
561  h_.pullBarrel->Fill(pull);
565 
568  h_.pull_wheel_pull->Fill(ring, pull);
570 
572  } else {
573  ++nMatchHitEndcap;
574  h_.resEndcap->Fill(dX);
575  h_.pullEndcap->Fill(pull);
578 
581  h_.pull_disk_pull->Fill(region * station, pull);
582  h_.pull_ring_pull->Fill(ring, pull);
583 
585  }
586  }
587  h_.nMatchHitBarrel->Fill(nMatchHitBarrel);
588  h_.nMatchHitEndcap->Fill(nMatchHitEndcap);
589 
590  // Reco Muon hits
591  for (reco::MuonCollection::const_iterator muon = muonHandle->begin(); muon != muonHandle->end(); ++muon) {
592  if (!muon->isGlobalMuon())
593  continue;
594 
595  int nRPCHitBarrel = 0;
596  int nRPCHitEndcap = 0;
597 
598  const reco::TrackRef glbTrack = muon->globalTrack();
599  for (trackingRecHit_iterator recHit = glbTrack->recHitsBegin(); recHit != glbTrack->recHitsEnd(); ++recHit) {
600  if (!(*recHit)->isValid())
601  continue;
602  const DetId detId = (*recHit)->geographicalId();
603  if (detId.det() != DetId::Muon or detId.subdetId() != MuonSubdetId::RPC)
604  continue;
605  const RPCDetId rpcDetId = static_cast<const RPCDetId>(detId);
606 
607  if (rpcDetId.region() == 0)
608  ++nRPCHitBarrel;
609  else
610  ++nRPCHitEndcap;
611  }
612 
613  const int nRPCHit = nRPCHitBarrel + nRPCHitEndcap;
614  h_nRPCHitPerRecoMuon->Fill(nRPCHit);
615  if (nRPCHitBarrel and nRPCHitEndcap) {
620  } else if (nRPCHitBarrel) {
622  h_recoMuonBarrel_pt->Fill(muon->pt());
623  h_recoMuonBarrel_eta->Fill(muon->eta());
624  h_recoMuonBarrel_phi->Fill(muon->phi());
625  } else if (nRPCHitEndcap) {
627  h_recoMuonEndcap_pt->Fill(muon->pt());
628  h_recoMuonEndcap_eta->Fill(muon->eta());
629  h_recoMuonEndcap_phi->Fill(muon->phi());
630  } else {
631  h_recoMuonNoRPC_pt->Fill(muon->pt());
632  h_recoMuonNoRPC_eta->Fill(muon->eta());
633  h_recoMuonNoRPC_phi->Fill(muon->phi());
634  }
635  }
636 
637  h_eventCount->Fill(2);
638 }
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:23
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 37 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().

37  {
38  // Book MonitorElements
39  h_.bookHistograms(booker, subDir_);
40 
41  // SimHit plots, not compatible to RPCPoint-RPCRecHit comparison
42  booker.setCurrentFolder(subDir_ + "/HitProperty");
43  h_simParticleType = booker.book1D("SimHitPType", "SimHit particle type", 11, 0, 11);
44  h_simParticleType->getTH1()->SetMinimum(0);
45  if (TH1 *h = h_simParticleType->getTH1()) {
46  h->GetXaxis()->SetBinLabel(1, "#mu^{-}");
47  h->GetXaxis()->SetBinLabel(2, "#mu^{+}");
48  h->GetXaxis()->SetBinLabel(3, "e^{-}");
49  h->GetXaxis()->SetBinLabel(4, "e^{+}");
50  h->GetXaxis()->SetBinLabel(5, "#pi^{+}");
51  h->GetXaxis()->SetBinLabel(6, "#pi^{-}");
52  h->GetXaxis()->SetBinLabel(7, "K^{+}");
53  h->GetXaxis()->SetBinLabel(8, "K^{-}");
54  h->GetXaxis()->SetBinLabel(9, "p^{+}");
55  h->GetXaxis()->SetBinLabel(10, "p^{-}");
56  h->GetXaxis()->SetBinLabel(11, "Other");
57  }
58 
59  booker.setCurrentFolder(subDir_ + "/Track");
60 
61  h_nRPCHitPerSimMuon = booker.book1D("NRPCHitPerSimMuon", "Number of RPC SimHit per SimMuon", 11, -0.5, 10.5);
63  booker.book1D("NRPCHitPerSimMuonBarrel", "Number of RPC SimHit per SimMuon", 11, -0.5, 10.5);
65  booker.book1D("NRPCHitPerSimMuonOverlap", "Number of RPC SimHit per SimMuon", 11, -0.5, 10.5);
67  booker.book1D("NRPCHitPerSimMuonEndcap", "Number of RPC SimHit per SimMuon", 11, -0.5, 10.5);
68 
69  h_nRPCHitPerRecoMuon = booker.book1D("NRPCHitPerRecoMuon", "Number of RPC RecHit per RecoMuon", 11, -0.5, 10.5);
71  booker.book1D("NRPCHitPerRecoMuonBarrel", "Number of RPC RecHit per RecoMuon", 11, -0.5, 10.5);
73  booker.book1D("NRPCHitPerRecoMuonOverlap", "Number of RPC RecHit per RecoMuon", 11, -0.5, 10.5);
75  booker.book1D("NRPCHitPerRecoMuonEndcap", "Number of RPC RecHit per RecoMuon", 11, -0.5, 10.5);
76 
77  h_nRPCHitPerSimMuon->getTH1()->SetMinimum(0);
78  h_nRPCHitPerSimMuonBarrel->getTH1()->SetMinimum(0);
79  h_nRPCHitPerSimMuonOverlap->getTH1()->SetMinimum(0);
80  h_nRPCHitPerSimMuonEndcap->getTH1()->SetMinimum(0);
81 
82  h_nRPCHitPerRecoMuon->getTH1()->SetMinimum(0);
83  h_nRPCHitPerRecoMuonBarrel->getTH1()->SetMinimum(0);
84  h_nRPCHitPerRecoMuonOverlap->getTH1()->SetMinimum(0);
85  h_nRPCHitPerRecoMuonEndcap->getTH1()->SetMinimum(0);
86 
87  float ptBins[] = {0, 1, 2, 5, 10, 20, 30, 50, 100, 200, 300, 500};
88  const int nPtBins = sizeof(ptBins) / sizeof(float) - 1;
90  booker.book1D("SimMuonBarrel_pt", "SimMuon RPCHit in Barrel p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
92  booker.book1D("SimMuonOverlap_pt", "SimMuon RPCHit in Overlap p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
94  booker.book1D("SimMuonEndcap_pt", "SimMuon RPCHit in Endcap p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
96  booker.book1D("SimMuonNoRPC_pt", "SimMuon without RPCHit p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
97  h_simMuonBarrel_eta = booker.book1D("SimMuonBarrel_eta", "SimMuon RPCHit in Barrel #eta;#eta", 50, -2.5, 2.5);
98  h_simMuonOverlap_eta = booker.book1D("SimMuonOverlap_eta", "SimMuon RPCHit in Overlap #eta;#eta", 50, -2.5, 2.5);
99  h_simMuonEndcap_eta = booker.book1D("SimMuonEndcap_eta", "SimMuon RPCHit in Endcap #eta;#eta", 50, -2.5, 2.5);
100  h_simMuonNoRPC_eta = booker.book1D("SimMuonNoRPC_eta", "SimMuon without RPCHit #eta;#eta", 50, -2.5, 2.5);
102  booker.book1D("SimMuonBarrel_phi", "SimMuon RPCHit in Barrel #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
104  booker.book1D("SimMuonOverlap_phi", "SimMuon RPCHit in Overlap #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
106  booker.book1D("SimMuonEndcap_phi", "SimMuon RPCHit in Endcap #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
108  booker.book1D("SimMuonNoRPC_phi", "SimMuon without RPCHit #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
109 
111  booker.book1D("RecoMuonBarrel_pt", "RecoMuon RPCHit in Barrel p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
113  booker.book1D("RecoMuonOverlap_pt", "RecoMuon RPCHit in Overlap p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
115  booker.book1D("RecoMuonEndcap_pt", "RecoMuon RPCHit in Endcap p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
117  booker.book1D("RecoMuonNoRPC_pt", "RecoMuon without RPCHit p_{T};p_{T} [GeV/c^{2}]", nPtBins, ptBins);
118  h_recoMuonBarrel_eta = booker.book1D("RecoMuonBarrel_eta", "RecoMuon RPCHit in Barrel #eta;#eta", 50, -2.5, 2.5);
119  h_recoMuonOverlap_eta = booker.book1D("RecoMuonOverlap_eta", "RecoMuon RPCHit in Overlap #eta;#eta", 50, -2.5, 2.5);
120  h_recoMuonEndcap_eta = booker.book1D("RecoMuonEndcap_eta", "RecoMuon RPCHit in Endcap #eta;#eta", 50, -2.5, 2.5);
121  h_recoMuonNoRPC_eta = booker.book1D("RecoMuonNoRPC_eta", "RecoMuon without RPCHit #eta;#eta", 50, -2.5, 2.5);
123  booker.book1D("RecoMuonBarrel_phi", "RecoMuon RPCHit in Barrel #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
125  booker.book1D("RecoMuonOverlap_phi", "RecoMuon RPCHit in Overlap #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
127  booker.book1D("RecoMuonEndcap_phi", "RecoMuon RPCHit in Endcap #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
129  booker.book1D("RecoMuonNoRPC_phi", "RecoMuon without RPCHit #phi;#phi", 36, -TMath::Pi(), TMath::Pi());
130 
131  h_simMuonBarrel_pt->getTH1()->SetMinimum(0);
132  h_simMuonOverlap_pt->getTH1()->SetMinimum(0);
133  h_simMuonEndcap_pt->getTH1()->SetMinimum(0);
134  h_simMuonNoRPC_pt->getTH1()->SetMinimum(0);
135  h_simMuonBarrel_eta->getTH1()->SetMinimum(0);
136  h_simMuonOverlap_eta->getTH1()->SetMinimum(0);
137  h_simMuonEndcap_eta->getTH1()->SetMinimum(0);
138  h_simMuonNoRPC_eta->getTH1()->SetMinimum(0);
139  h_simMuonBarrel_phi->getTH1()->SetMinimum(0);
140  h_simMuonOverlap_phi->getTH1()->SetMinimum(0);
141  h_simMuonEndcap_phi->getTH1()->SetMinimum(0);
142  h_simMuonNoRPC_phi->getTH1()->SetMinimum(0);
143 
144  h_recoMuonBarrel_pt->getTH1()->SetMinimum(0);
145  h_recoMuonOverlap_pt->getTH1()->SetMinimum(0);
146  h_recoMuonEndcap_pt->getTH1()->SetMinimum(0);
147  h_recoMuonNoRPC_pt->getTH1()->SetMinimum(0);
148  h_recoMuonBarrel_eta->getTH1()->SetMinimum(0);
149  h_recoMuonOverlap_eta->getTH1()->SetMinimum(0);
150  h_recoMuonEndcap_eta->getTH1()->SetMinimum(0);
151  h_recoMuonNoRPC_eta->getTH1()->SetMinimum(0);
152  h_recoMuonBarrel_phi->getTH1()->SetMinimum(0);
153  h_recoMuonOverlap_phi->getTH1()->SetMinimum(0);
154  h_recoMuonEndcap_phi->getTH1()->SetMinimum(0);
155  h_recoMuonNoRPC_phi->getTH1()->SetMinimum(0);
156 
157  booker.setCurrentFolder(subDir_ + "/Occupancy");
158 
159  h_eventCount = booker.book1D("EventCount", "Event count", 3, 1, 4);
160  h_eventCount->getTH1()->SetMinimum(0);
161  if (h_eventCount) {
162  TH1 *h = h_eventCount->getTH1();
163  h->GetXaxis()->SetBinLabel(1, "eventBegin");
164  h->GetXaxis()->SetBinLabel(2, "eventEnd");
165  h->GetXaxis()->SetBinLabel(3, "run");
166  }
167  h_eventCount->Fill(3);
168 
169  // Book roll-by-roll histograms
170  auto rpcGeom = eventSetup.getHandle(rpcGeomTokenInRun_);
171 
172  int nRPCRollBarrel = 0, nRPCRollEndcap = 0;
173 
174  TrackingGeometry::DetContainer rpcDets = rpcGeom->dets();
175  for (auto det : rpcDets) {
176  auto rpcCh = dynamic_cast<const RPCChamber *>(det);
177  if (!rpcCh)
178  continue;
179 
180  std::vector<const RPCRoll *> rolls = rpcCh->rolls();
181  for (auto roll : rolls) {
182  if (!roll)
183  continue;
184 
185  const int rawId = roll->geographicalId().rawId();
186 
187  if (roll->isBarrel()) {
188  detIdToIndexMapBarrel_[rawId] = nRPCRollBarrel;
189  ++nRPCRollBarrel;
190  } else {
191  detIdToIndexMapEndcap_[rawId] = nRPCRollEndcap;
192  ++nRPCRollEndcap;
193  }
194  }
195  }
196 
197  booker.setCurrentFolder(subDir_ + "/Occupancy");
198  h_matchOccupancyBarrel_detId = booker.book1D("MatchOccupancyBarrel_detId",
199  "Matched hit occupancy;roll index (can be arbitrary)",
200  nRPCRollBarrel,
201  0,
202  nRPCRollBarrel);
203  h_matchOccupancyEndcap_detId = booker.book1D("MatchOccupancyEndcap_detId",
204  "Matched hit occupancy;roll index (can be arbitrary)",
205  nRPCRollEndcap,
206  0,
207  nRPCRollEndcap);
208  h_refOccupancyBarrel_detId = booker.book1D("RefOccupancyBarrel_detId",
209  "Reference hit occupancy;roll index (can be arbitrary)",
210  nRPCRollBarrel,
211  0,
212  nRPCRollBarrel);
213  h_refOccupancyEndcap_detId = booker.book1D("RefOccupancyEndcap_detId",
214  "Reference hit occupancy;roll index (can be arbitrary)",
215  nRPCRollEndcap,
216  0,
217  nRPCRollEndcap);
219  "OccupancyBarrel_detId", "Occupancy;roll index (can be arbitrary)", nRPCRollBarrel, 0, nRPCRollBarrel);
221  "OccupancyEndcap_detId", "Occupancy;roll index (can be arbitrary)", nRPCRollEndcap, 0, nRPCRollEndcap);
222 
223  h_matchOccupancyBarrel_detId->getTH1()->SetMinimum(0);
224  h_matchOccupancyEndcap_detId->getTH1()->SetMinimum(0);
225  h_refOccupancyBarrel_detId->getTH1()->SetMinimum(0);
226  h_refOccupancyEndcap_detId->getTH1()->SetMinimum(0);
227  h_allOccupancyBarrel_detId->getTH1()->SetMinimum(0);
228  h_allOccupancyEndcap_detId->getTH1()->SetMinimum(0);
229 
231  "RollAreaBarrel_detId", "Roll area;roll index;Area", nRPCRollBarrel, 0., 1. * nRPCRollBarrel, 0., 1e5);
233  "RollAreaEndcap_detId", "Roll area;roll index;Area", nRPCRollEndcap, 0., 1. * nRPCRollEndcap, 0., 1e5);
234 
235  for (auto detIdToIndex : detIdToIndexMapBarrel_) {
236  const int rawId = detIdToIndex.first;
237  const int index = detIdToIndex.second;
238 
239  const RPCDetId rpcDetId = static_cast<const RPCDetId>(rawId);
240  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(rpcDetId));
241 
242  const StripTopology &topol = roll->specificTopology();
243  const double area = topol.stripLength() * topol.nstrips() * topol.pitch();
244 
246  }
247 
248  for (auto detIdToIndex : detIdToIndexMapEndcap_) {
249  const int rawId = detIdToIndex.first;
250  const int index = detIdToIndex.second;
251 
252  const RPCDetId rpcDetId = static_cast<const RPCDetId>(rawId);
253  const RPCRoll *roll = dynamic_cast<const RPCRoll *>(rpcGeom->roll(rpcDetId));
254 
255  const StripTopology &topol = roll->specificTopology();
256  const double area = topol.stripLength() * topol.nstrips() * topol.pitch();
257 
259  }
260 }
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.