CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes
CTPPSDiamondDQMSource Class Reference
Inheritance diagram for CTPPSDiamondDQMSource:
DQMEDAnalyzer edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > > edm::stream::EDAnalyzerBase edm::EDConsumerBase

Classes

struct  ChannelPlots
 plots related to one Diamond channel More...
 
struct  GlobalPlots
 plots related to the whole system More...
 
struct  PlanePlots
 plots related to one Diamond plane More...
 
struct  PotPlots
 plots related to one Diamond detector package More...
 

Public Member Functions

 CTPPSDiamondDQMSource (const edm::ParameterSet &)
 
virtual ~CTPPSDiamondDQMSource ()
 
- Public Member Functions inherited from DQMEDAnalyzer
virtual void beginRun (edm::Run const &, edm::EventSetup const &) final
 
virtual void beginStream (edm::StreamID id) final
 
virtual void bookHistograms (DQMStore::IBooker &i, edm::Run const &, edm::EventSetup const &)=0
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer (void)
 
virtual void endLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
virtual void endRunSummary (edm::Run const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
uint32_t streamId () const
 
- Public Member Functions inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void analyze (const edm::Event &, const edm::EventSetup &)
 
void beginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
 
void bookHistograms (DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
 
void dqmBeginRun (const edm::Run &, const edm::EventSetup &) override
 
void endLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &)
 
void endRun (const edm::Run &, const edm::EventSetup &)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Private Attributes

std::unordered_map< unsigned int, ChannelPlotschannelPlots_
 
int EC_difference_45_
 
int EC_difference_56_
 
bool excludeMultipleHits_
 
GlobalPlots globalPlot_
 
double minimumStripAngleForTomography_
 
std::unordered_map< unsigned int, PlanePlotsplanePlots_
 
std::unordered_map< unsigned int, PotPlotspotPlots_
 
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
 
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
 
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondDigi > > tokenDigi_
 
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
 
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack_
 
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
 
unsigned int verbosity_
 

Static Private Attributes

static const int CHANNEL_OF_VFAT_CLOCK = 30
 
static const int CTPPS_DIAMOND_NUM_OF_CHANNELS = 12
 
static const int CTPPS_DIAMOND_NUM_OF_PLANES = 4
 
static const int CTPPS_DIAMOND_RP_ID = 6
 
static const int CTPPS_DIAMOND_STATION_ID = 1
 
static const int CTPPS_FAR_RP_ID = 3
 
static const int CTPPS_FED_ID_45 = 583
 
static const int CTPPS_FED_ID_56 = 582
 
static const int CTPPS_NEAR_RP_ID = 2
 
static const int CTPPS_NUM_OF_ARMS = 2
 
static const double DISPLAY_RESOLUTION_FOR_HITS_MM = 0.1
 
static const double HPTDC_BIN_WIDTH_NS = 25./1024
 
static const double SEC_PER_LUMI_SECTION = 23.31
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDAnalyzerBase
typedef EDAnalyzerAdaptorBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static std::shared_ptr< dqmDetails::NoCacheglobalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
 
static std::shared_ptr< dqmDetails::NoCacheglobalBeginRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *)
 
static void globalEndLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *, dqmDetails::NoCache *)
 
static void globalEndRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *, dqmDetails::NoCache *)
 
- Static Public Member Functions inherited from edm::stream::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Detailed Description

Definition at line 37 of file CTPPSDiamondDQMSource.cc.

Constructor & Destructor Documentation

CTPPSDiamondDQMSource::CTPPSDiamondDQMSource ( const edm::ParameterSet ps)

Definition at line 319 of file CTPPSDiamondDQMSource.cc.

319  :
325  tokenFEDInfo_ ( consumes< std::vector<TotemFEDInfo> > ( ps.getParameter<edm::InputTag>( "tagFEDInfo" ) ) ),
326  excludeMultipleHits_ ( ps.getParameter<bool>( "excludeMultipleHits" ) ),
327  minimumStripAngleForTomography_( ps.getParameter<double>( "minimumStripAngleForTomography" ) ),
328  verbosity_ ( ps.getUntrackedParameter<unsigned int>( "verbosity", 0 ) ),
329  EC_difference_56_( -500 ), EC_difference_45_( -500 )
330 {}
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondDigi > > tokenDigi_
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
CTPPSDiamondDQMSource::~CTPPSDiamondDQMSource ( )
virtual

Definition at line 334 of file CTPPSDiamondDQMSource.cc.

335 {}

Member Function Documentation

void CTPPSDiamondDQMSource::analyze ( const edm::Event event,
const edm::EventSetup  
)
protected

Definition at line 384 of file CTPPSDiamondDQMSource.cc.

References CTPPSDetId::arm(), edm::EventBase::bunchCrossing(), CHANNEL_OF_VFAT_CLOCK, channelPlots_, CTPPS_FAR_RP_ID, CTPPS_FED_ID_45, CTPPS_FED_ID_56, CTPPS_NEAR_RP_ID, TauDecayModes::dec, DISPLAY_RESOLUTION_FOR_HITS_MM, EC_difference_45_, EC_difference_56_, excludeMultipleHits_, MonitorElement::Fill(), HPTDCErrorFlags::getErrorId(), globalPlot_, CTPPSDiamondDQMSource::GlobalPlots::h_trackCorr_hor, HPTDC_BIN_WIDTH_NS, mps_fire::i, edm::HandleBase::isValid(), minimumStripAngleForTomography_, planePlots_, potPlots_, TrackInfoProducer_cfi::rechits, CTPPSDiamondDetId::setChannel(), CTPPSDiamondDetId::setPlane(), mps_update::status, tokenDiamondHit_, tokenDiamondTrack_, tokenDigi_, tokenFEDInfo_, tokenLocalTrack_, tokenStatus_, HiIsolationCommonParameters_cff::track, l1t::tracks, and verbosity_.

385 {
386  // get event data
388  event.getByToken( tokenStatus_, diamondVFATStatus );
389 
391  event.getByToken( tokenLocalTrack_, stripTracks );
392 
394  event.getByToken( tokenDigi_, diamondDigis );
395 
397  event.getByToken( tokenFEDInfo_, fedInfo );
398 
400  event.getByToken( tokenDiamondHit_, diamondRecHits );
401 
403  event.getByToken( tokenDiamondTrack_, diamondLocalTracks );
404 
405  // check validity
406  bool valid = true;
407  valid &= diamondVFATStatus.isValid();
408  valid &= diamondDigis.isValid();
409  valid &= fedInfo.isValid();
410 
411  if ( !valid ) {
412  if ( verbosity_ ) {
413  edm::LogProblem("CTPPSDiamondDQMSource")
414  << "ERROR in TotemDQMModuleRP::analyze > some of the required inputs are not valid. Skipping this event.\n"
415  << " diamondVFATStatus.isValid = " << diamondVFATStatus.isValid() << "\n"
416  << " diamondDigis.isValid = " << diamondDigis.isValid() << "\n"
417  << " fedInfo.isValid = " << fedInfo.isValid();
418  }
419 
420  return;
421  }
422 
423  //------------------------------
424  // RP Plots
425  //------------------------------
426 
427  //------------------------------
428  // Correlation Plots
429  //------------------------------
430 
431  for ( const auto& ds1 : *stripTracks ) {
432  for ( const auto& tr1 : ds1 ) {
433  if ( ! tr1.isValid() ) continue;
434 
435  CTPPSDetId rpId1( ds1.detId() );
436  unsigned int arm1 = rpId1.arm();
437  unsigned int stNum1 = rpId1.station();
438  unsigned int rpNum1 = rpId1.rp();
439  if (stNum1 != 0 || ( rpNum1 != 2 && rpNum1 != 3 ) ) continue;
440  unsigned int idx1 = arm1*3 + rpNum1-2;
441 
442  for ( const auto& ds2 : *stripTracks ) {
443  for ( const auto& tr2 : ds2 ) {
444  if ( ! tr2.isValid() ) continue;
445 
446  CTPPSDetId rpId2(ds2.detId());
447  unsigned int arm2 = rpId2.arm();
448  unsigned int stNum2 = rpId2.station();
449  unsigned int rpNum2 = rpId2.rp();
450  if (stNum2 != 0 || ( rpNum2 != 2 && rpNum2 != 3 ) ) continue;
451  unsigned int idx2 = arm2*3 + rpNum2-2;
452 
453  if ( idx1 >= idx2 ) globalPlot_.h_trackCorr_hor->Fill( 5-idx1, idx2 ); // strips-strips
454  }
455  }
456  for ( const auto& ds2 : *diamondLocalTracks ) {
457  for ( const auto& tr2 : ds2 ) {
458  if ( ! tr2.isValid() ) continue;
459  if ( tr2.getOOTIndex() != 1 ) continue;
460  if ( excludeMultipleHits_ && tr2.getMultipleHits() > 0 ) continue;
461 
462  CTPPSDetId diamId2( ds2.detId() );
463  unsigned int arm2 = diamId2.arm();
464  if ( idx1 >= arm2*3+2 )
465  globalPlot_.h_trackCorr_hor->Fill( 5-idx1, arm2*3+2 ); // strips-diamonds
466  else
467  globalPlot_.h_trackCorr_hor->Fill( 5-(arm2*3+2 ),idx1 ); // strips-diamonds
468  }
469  }
470  }
471  }
472 
473  for ( const auto& ds1 : *diamondLocalTracks ) {
474  for ( const auto& tr1 : ds1 ) {
475  if ( ! tr1.isValid() ) continue;
476  if ( excludeMultipleHits_ && tr1.getMultipleHits() > 0 ) continue;
477  if ( tr1.getOOTIndex() != 1 ) continue;
478 
479  CTPPSDetId diamId1( ds1.detId() );
480  unsigned int arm1 = diamId1.arm();
481 
482  globalPlot_.h_trackCorr_hor->Fill( 5-(arm1*3+2), arm1*3+2 ); // diamonds-diamonds
483 
484  for ( const auto& ds2 : *diamondLocalTracks ) {
485  for ( const auto& tr2 : ds2 ) {
486  if ( ! tr2.isValid() ) continue;
487  if ( excludeMultipleHits_ && tr2.getMultipleHits() > 0 ) continue;
488  if ( tr2.getOOTIndex() != 1 ) continue;
489 
490  CTPPSDetId diamId2( ds2.detId() );
491  unsigned int arm2 = diamId2.arm();
492  if ( arm1 > arm2 ) globalPlot_.h_trackCorr_hor->Fill( 5-(arm1*3+2), arm2*3+2 ); // diamonds-diamonds
493  }
494  }
495  }
496  }
497 
498 
499  // Using CTPPSDiamondDigi
500  for ( const auto& digis : *diamondDigis ) {
501  const CTPPSDiamondDetId detId( digis.detId() );
502  CTPPSDiamondDetId detId_pot( digis.detId() );
503 
504  for ( const auto& digi : digis ) {
505  detId_pot.setPlane( 0 );
506  detId_pot.setChannel( 0 );
507  if ( potPlots_.find( detId_pot ) == potPlots_.end() ) continue;
508  //Leading without trailing investigation
509  if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() == 0 ) potPlots_[detId_pot].leadingWithoutTrailingCumulativePot->Fill( 1 );
510  else if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0 ) potPlots_[detId_pot].leadingWithoutTrailingCumulativePot->Fill( 2 );
511  else if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0 ) potPlots_[detId_pot].leadingWithoutTrailingCumulativePot->Fill( 3 );
512  else if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0 ) potPlots_[detId_pot].leadingWithoutTrailingCumulativePot->Fill( 4 );
513 
514  if ( digi.getLeadingEdge() != 0 ) {
515  // FED BX monitoring (for MINIDAQ)
516  for ( const auto& fit : *fedInfo ) {
517  if ( ( detId.arm() == 1 && fit.getFEDId() == CTPPS_FED_ID_56 ) || ( detId.arm() == 0 && fit.getFEDId() == CTPPS_FED_ID_45 ) ) {
518  potPlots_[detId_pot].activity_per_fedbx->Fill( fit.getBX() );
519  potPlots_[detId_pot].activity_per_fedbx_short->Fill( fit.getBX() );
520  }
521  }
522  }
523 
524  // HPTDC Errors
525  const HPTDCErrorFlags hptdcErrors = digi.getHPTDCErrorFlags();
526  for ( unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex )
527  if ( hptdcErrors.getErrorId( hptdcErrorIndex-1 ) ) potPlots_[detId_pot].HPTDCErrorFlags_cumulative->Fill( hptdcErrorIndex );
528  if ( digi.getMultipleHit() ) potPlots_[detId_pot].HPTDCErrorFlags_cumulative->Fill( 16 );
529  }
530  }
531 
532  // EC Errors
533  for ( const auto& vfat_status : *diamondVFATStatus ) {
534  const CTPPSDiamondDetId detId( vfat_status.detId() );
535  CTPPSDiamondDetId detId_pot( vfat_status.detId() );
536  detId_pot.setPlane( 0 );
537  detId_pot.setChannel( 0 );
538  for ( const auto& status : vfat_status ) {
539  if ( !status.isOK() ) continue;
540  if ( potPlots_.find(detId_pot) == potPlots_.end() ) continue;
541 
542  // Check Event Number
543  for ( const auto& optorx : *fedInfo ) {
544  if ( detId.arm() == 1 && optorx.getFEDId() == CTPPS_FED_ID_56 ) {
545  potPlots_[detId_pot].ECCheck->Fill((int)((optorx.getLV1()& 0xFF)-((unsigned int) status.getEC() & 0xFF)) & 0xFF);
546  if ( ( static_cast<int>( ( optorx.getLV1() & 0xFF )-status.getEC() ) != EC_difference_56_ ) && ( static_cast<uint8_t>( ( optorx.getLV1() & 0xFF )-status.getEC() ) < 128 ) )
547  EC_difference_56_ = static_cast<int>( optorx.getLV1() & 0xFF )-( static_cast<unsigned int>( status.getEC() ) & 0xFF );
548  if ( EC_difference_56_ != 1 && EC_difference_56_ != -500 && EC_difference_56_ < 128 && EC_difference_56_ > -128 )
549  if (verbosity_) edm::LogProblem("CTPPSDiamondDQMSource") << "FED " << CTPPS_FED_ID_56 << ": ECError at EV: 0x"<< std::hex << optorx.getLV1()
550  << "\t\tVFAT EC: 0x"<< static_cast<unsigned int>( status.getEC() )
551  << "\twith ID: " << std::dec << detId
552  << "\tdiff: " << EC_difference_56_;
553  }
554  else if ( detId.arm() == 0 && optorx.getFEDId()== CTPPS_FED_ID_45 ) {
555  potPlots_[detId_pot].ECCheck->Fill((int)((optorx.getLV1()& 0xFF)-status.getEC()) & 0xFF);
556  if ( ( static_cast<int>( ( optorx.getLV1() & 0xFF )-status.getEC() ) != EC_difference_45_ ) && ( static_cast<uint8_t>( ( optorx.getLV1() & 0xFF )-status.getEC() ) < 128 ) )
557  EC_difference_45_ = static_cast<int>( optorx.getLV1() & 0xFF )-( static_cast<unsigned int>( status.getEC() ) & 0xFF );
558  if ( EC_difference_45_ != 1 && EC_difference_45_ != -500 && EC_difference_45_ < 128 && EC_difference_45_ > -128 )
559  if (verbosity_) edm::LogProblem("CTPPSDiamondDQMSource") << "FED " << CTPPS_FED_ID_45 << ": ECError at EV: 0x"<< std::hex << optorx.getLV1()
560  << "\t\tVFAT EC: 0x"<< static_cast<unsigned int>( status.getEC() )
561  << "\twith ID: " << std::dec << detId
562  << "\tdiff: " << EC_difference_45_;
563  }
564  }
565  }
566  }
567 
568  // Using CTPPSDiamondRecHit
569  std::unordered_map<unsigned int, std::set<unsigned int> > planes;
570 
571  for ( const auto& rechits : *diamondRecHits ) {
572  CTPPSDiamondDetId detId_pot( rechits.detId() );
573  detId_pot.setPlane( 0 );
574  detId_pot.setChannel( 0 );
575  const CTPPSDiamondDetId detId( rechits.detId() );
576 
577  for ( const auto& rechit : rechits ) {
578  if ( excludeMultipleHits_ && rechit.getMultipleHits() > 0 ) continue;
579  planes[detId_pot].insert( detId.plane() );
580 
581  if ( potPlots_.find( detId_pot ) == potPlots_.end() ) continue;
582 
583  float UFSDShift = 0.0;
584  if ( rechit.getYWidth() < 3 ) UFSDShift = 0.5; // Display trick for UFSD that have 2 pixels with same X
585 
586  TH2F *hitHistoTmp = potPlots_[detId_pot].hitDistribution2d->getTH2F();
587  TAxis *hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
588  int startBin = hitHistoTmpYAxis->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
589  int numOfBins = rechit.getXWidth()/DISPLAY_RESOLUTION_FOR_HITS_MM;
590  for ( int i=0; i<numOfBins; ++i) {
591  hitHistoTmp->Fill( detId.plane(), hitHistoTmpYAxis->GetBinCenter(startBin+i) + UFSDShift );
592  }
593 
594  TH2F *hitHistoOOTTmp = potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
595  TAxis *hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
596  startBin = hitHistoOOTTmpYAxis->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
597  numOfBins = rechit.getXWidth()/DISPLAY_RESOLUTION_FOR_HITS_MM;
598  for ( int i=0; i<numOfBins; ++i) {
599  hitHistoOOTTmp->Fill( detId.plane() + 0.25 * rechit.getOOTIndex(), hitHistoOOTTmpYAxis->GetBinCenter(startBin+i) );
600  }
601 
602  potPlots_[detId_pot].leadingEdgeCumulativePot->Fill( rechit.getT() );
603  potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill( rechit.getToT() );
604  potPlots_[detId_pot].leadingTrailingCorrelationPot->Fill( rechit.getT(), rechit.getT() + rechit.getToT() );
605 
606  switch ( rechit.getOOTIndex() ) {
607  case 0: {
608  potPlots_[detId_pot].activity_per_bx_minus1->Fill( event.bunchCrossing() );
609  potPlots_[detId_pot].activity_per_bx_short_minus1->Fill( event.bunchCrossing() );
610  } break;
611  case 1: {
612  potPlots_[detId_pot].activity_per_bx->Fill( event.bunchCrossing() );
613  potPlots_[detId_pot].activity_per_bx_short->Fill( event.bunchCrossing() );
614  } break;
615  case 2: {
616  potPlots_[detId_pot].activity_per_bx_plus1->Fill( event.bunchCrossing() );
617  potPlots_[detId_pot].activity_per_bx_short_plus1->Fill( event.bunchCrossing() );
618  } break;
619  }
620  }
621  }
622 
623  for ( const auto& plt : potPlots_ ) {
624  plt.second.activePlanes->Fill( planes[plt.first].size() );
625  }
626 
627  // Using CTPPSDiamondLocalTrack
628  for ( const auto& tracks : *diamondLocalTracks ) {
629  CTPPSDiamondDetId detId_pot( tracks.detId() );
630  detId_pot.setPlane( 0 );
631  detId_pot.setChannel( 0 );
632  const CTPPSDiamondDetId detId( tracks.detId() );
633 
634  for ( const auto& track : tracks ) {
635  if ( ! track.isValid() ) continue;
636  if ( excludeMultipleHits_ && track.getMultipleHits() > 0 ) continue;
637  if ( potPlots_.find( detId_pot ) == potPlots_.end() ) continue;
638 
639  TH2F *trackHistoOOTTmp = potPlots_[detId_pot].trackDistributionOOT->getTH2F();
640  TAxis *trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
641  int startBin = trackHistoOOTTmpYAxis->FindBin( track.getX0() - track.getX0Sigma() );
642  int numOfBins = 2*track.getX0Sigma()/DISPLAY_RESOLUTION_FOR_HITS_MM;
643  for ( int i=0; i<numOfBins; ++i) {
644  trackHistoOOTTmp->Fill( track.getOOTIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin+i) );
645  }
646 
647  if ( track.getOOTIndex() == 1 ) {
648  TH1F *trackHistoInTimeTmp = potPlots_[detId_pot].trackDistribution->getTH1F();
649  int startBin = trackHistoInTimeTmp->FindBin( track.getX0() - track.getX0Sigma() );
650  int numOfBins = 2*track.getX0Sigma()/DISPLAY_RESOLUTION_FOR_HITS_MM;
651  for ( int i=0; i<numOfBins; ++i) {
652  trackHistoInTimeTmp->Fill( trackHistoInTimeTmp->GetBinCenter(startBin+i) );
653  }
654  }
655  }
656  }
657 
658  // Tomography of diamonds using strips
659  for ( const auto& rechits : *diamondRecHits ) {
660  CTPPSDiamondDetId detId_pot( rechits.detId() );
661  detId_pot.setPlane( 0 );
662  detId_pot.setChannel( 0 );
663  const CTPPSDiamondDetId detId( rechits.detId() );
664 
665  for ( const auto& rechit : rechits ) {
666  if ( excludeMultipleHits_ && rechit.getMultipleHits() > 0 ) continue;
667  if ( !stripTracks.isValid() ) continue;
668  if ( potPlots_.find( detId_pot ) == potPlots_.end() ) continue;
669 
670  for ( const auto& ds : *stripTracks ) {
671  const CTPPSDetId stripId( ds.detId() );
672  for ( const auto& striplt : ds ) {
673  if ( !striplt.isValid() ) continue;
674  if ( stripId.arm() != detId_pot.arm() ) continue;
675  if ( striplt.getTx() > minimumStripAngleForTomography_ || striplt.getTy() > minimumStripAngleForTomography_) continue;
676  if ( stripId.rp() == CTPPS_FAR_RP_ID ) {
677  switch ( rechit.getOOTIndex() ) {
678  case 0: {
679  potPlots_[detId_pot].stripTomographyAllFar_minus1->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
680  } break;
681  case 1: {
682  potPlots_[detId_pot].stripTomographyAllFar->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
683  } break;
684  case 2: {
685  potPlots_[detId_pot].stripTomographyAllFar_plus1->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
686  } break;
687  }
688  }
689  else if ( stripId.rp() == CTPPS_NEAR_RP_ID ) {
690  switch ( rechit.getOOTIndex() ) {
691  case 0: {
692  potPlots_[detId_pot].stripTomographyAllNear_minus1->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
693  } break;
694  case 1: {
695  potPlots_[detId_pot].stripTomographyAllNear->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
696  } break;
697  case 2: {
698  potPlots_[detId_pot].stripTomographyAllNear_plus1->Fill( striplt.getX0() + 50*detId.plane(), striplt.getY0() );
699  } break;
700  }
701  }
702  }
703  }
704  }
705  }
706 
707  //------------------------------
708  // Clock Plots
709  //------------------------------
710 
711  for ( const auto& digis : *diamondDigis ) {
712  const CTPPSDiamondDetId detId( digis.detId() );
713  CTPPSDiamondDetId detId_pot( digis.detId() );
714  if ( detId.channel() == CHANNEL_OF_VFAT_CLOCK ) {
715  detId_pot.setPlane( 0 );
716  detId_pot.setChannel( 0 );
717  for ( const auto& digi : digis ) {
718  if ( detId.plane() == 1 ) {
719  potPlots_[detId_pot].clock_Digi1_le->Fill( HPTDC_BIN_WIDTH_NS * digi.getLeadingEdge() );
720  potPlots_[detId_pot].clock_Digi1_te->Fill( HPTDC_BIN_WIDTH_NS * digi.getTrailingEdge() );
721  }
722  if ( detId.plane() == 3 ) {
723  potPlots_[detId_pot].clock_Digi3_le->Fill( HPTDC_BIN_WIDTH_NS * digi.getLeadingEdge() );
724  potPlots_[detId_pot].clock_Digi3_te->Fill( HPTDC_BIN_WIDTH_NS * digi.getTrailingEdge() );
725  }
726  }
727  }
728  }
729 
730  //------------------------------
731  // Plane Plots
732  //------------------------------
733 
734  // Using CTPPSDiamondDigi
735  std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
736  for ( const auto& digis : *diamondDigis ) {
737  const CTPPSDiamondDetId detId( digis.detId() );
738  CTPPSDiamondDetId detId_plane( digis.detId() );
739  for ( const auto& digi : digis ) {
740  detId_plane.setChannel( 0 );
741  if ( planePlots_.find( detId_plane ) == planePlots_.end() ) continue;
742 
743  planePlots_[detId_plane].threshold_voltage->Fill( detId.channel(), digi.getThresholdVoltage() );
744 
745  if ( digi.getLeadingEdge() != 0 ) {
746  planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill( detId.channel() );
747  if ( channelsPerPlane.find(detId_plane) != channelsPerPlane.end() ) channelsPerPlane[detId_plane]++;
748  else channelsPerPlane[detId_plane] = 0;
749  }
750  }
751  }
752 
753  for ( const auto& plt : channelsPerPlane ) {
754  planePlots_[plt.first].hit_multiplicity->Fill( plt.second );
755  }
756 
757  // Using CTPPSDiamondRecHit
758  for ( const auto& rechits : *diamondRecHits ) {
759  CTPPSDiamondDetId detId_plane( rechits.detId() );
760  detId_plane.setChannel( 0 );
761  for ( const auto& rechit : rechits ) {
762  if ( excludeMultipleHits_ && rechit.getMultipleHits() > 0 ) continue;
763  if ( planePlots_.find( detId_plane ) != planePlots_.end() ) {
764  TH1F *hitHistoTmp = planePlots_[detId_plane].hitProfile->getTH1F();
765  int startBin = hitHistoTmp->FindBin( rechit.getX() - 0.5*rechit.getXWidth() );
766  int numOfBins = rechit.getXWidth()/DISPLAY_RESOLUTION_FOR_HITS_MM;
767  for ( int i=0; i<numOfBins; ++i) {
768  if ( rechit.getOOTIndex() == 1 ) hitHistoTmp->Fill( hitHistoTmp->GetBinCenter(startBin+i) );
769  }
770  }
771  }
772  }
773 
774  // Tomography of diamonds using strips
775  for ( const auto& rechits : *diamondRecHits ) {
776  CTPPSDiamondDetId detId_plane( rechits.detId() );
777  detId_plane.setChannel( 0 );
778  for ( const auto& rechit : rechits ) {
779  if ( excludeMultipleHits_ && rechit.getMultipleHits() > 0 ) continue;
780  if ( !stripTracks.isValid() ) continue;
781  if (planePlots_.find(detId_plane) == planePlots_.end()) continue;
782 
783  for ( const auto& ds : *stripTracks ) {
784  const CTPPSDetId stripId(ds.detId());
785  for ( const auto& striplt : ds ) {
786  if (! striplt.isValid()) continue;
787  if ( stripId.arm() != detId_plane.arm() ) continue;
788  if ( striplt.getTx() > minimumStripAngleForTomography_ || striplt.getTy() > minimumStripAngleForTomography_ ) continue;
789  if ( stripId.rp() == CTPPS_FAR_RP_ID ) {
790  planePlots_[detId_plane].stripTomography_far->Fill( striplt.getX0(), striplt.getY0() + 50*( rechit.getOOTIndex()-1 ) );
791  }
792  else if ( stripId.rp() == CTPPS_NEAR_RP_ID ) {
793  planePlots_[detId_plane].stripTomography_near->Fill( striplt.getX0(), striplt.getY0() + 50*( rechit.getOOTIndex()-1 ) );
794  }
795  }
796  }
797  }
798  }
799  //------------------------------
800  // Channel Plots
801  //------------------------------
802 
803  //Check Event Number
804  for ( const auto& vfat_status : *diamondVFATStatus ) {
805  const CTPPSDiamondDetId detId( vfat_status.detId() );
806  for ( const auto& status : vfat_status ) {
807  if ( !status.isOK() ) continue;
808  if ( channelPlots_.find(detId) != channelPlots_.end() ) {
809  for ( const auto& optorx : *fedInfo ) {
810  if ( ( detId.arm() == 1 && optorx.getFEDId() == CTPPS_FED_ID_56 ) || ( detId.arm() == 0 && optorx.getFEDId() == CTPPS_FED_ID_45 ) ) {
811  channelPlots_[detId].ECCheckPerChannel->Fill((int)((optorx.getLV1()& 0xFF)-((unsigned int) status.getEC() & 0xFF)) & 0xFF);
812  }
813  }
814  }
815  }
816  }
817 
818  // digi profile cumulative
819  for ( const auto& digis : *diamondDigis ) {
820  const CTPPSDiamondDetId detId( digis.detId() );
821  for ( const auto& digi : digis ) {
822  if ( channelPlots_.find( detId ) != channelPlots_.end() ) {
823  // HPTDC Errors
824  const HPTDCErrorFlags hptdcErrors = digi.getHPTDCErrorFlags();
825  for ( unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex )
826  if ( hptdcErrors.getErrorId( hptdcErrorIndex-1 ) ) channelPlots_[detId].HPTDCErrorFlags->Fill( hptdcErrorIndex );
827  if ( digi.getMultipleHit() ) channelPlots_[detId].HPTDCErrorFlags->Fill( 16 );
828 
829  // Check dropped trailing edges
830  if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() == 0 ) channelPlots_[detId].leadingWithoutTrailing->Fill( 1 );
831  else if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() == 0 ) channelPlots_[detId].leadingWithoutTrailing->Fill( 2 );
832  else if ( digi.getLeadingEdge() == 0 && digi.getTrailingEdge() != 0 ) channelPlots_[detId].leadingWithoutTrailing->Fill( 3 );
833  else if ( digi.getLeadingEdge() != 0 && digi.getTrailingEdge() != 0 ) channelPlots_[detId].leadingWithoutTrailing->Fill( 4 );
834  }
835  }
836  }
837 
838  // Using CTPPSDiamondRecHit
839  for ( const auto& rechits : *diamondRecHits ) {
840  CTPPSDiamondDetId detId( rechits.detId() );
841  for ( const auto& rechit : rechits ) {
842  if ( excludeMultipleHits_ && rechit.getMultipleHits() > 0 ) continue;
843  if ( channelPlots_.find( detId ) != channelPlots_.end() ) {
844  channelPlots_[detId].LeadingEdgeCumulativePerChannel->Fill( rechit.getT() );
845  channelPlots_[detId].TimeOverThresholdCumulativePerChannel->Fill( rechit.getToT() );
846  channelPlots_[detId].LeadingTrailingCorrelationPerChannel->Fill( rechit.getT(), rechit.getT() + rechit.getToT() );
847  ++(channelPlots_[detId].hitsCounterPerLumisection);
848  }
849  }
850  }
851 
852  // Tomography of diamonds using strips
853  for ( const auto& rechits : *diamondRecHits ) {
854  const CTPPSDiamondDetId detId( rechits.detId() );
855  for ( const auto& rechit : rechits ) {
856  if ( excludeMultipleHits_ && rechit.getMultipleHits() > 0 ) continue;
857  if ( stripTracks.isValid() ) {
858  if (channelPlots_.find(detId) == channelPlots_.end()) continue;
859  for ( const auto& ds : *stripTracks ) {
860  for ( const auto& striplt : ds ) {
861  CTPPSDetId stripId(ds.detId());
862  if ( !striplt.isValid() ) continue;
863  if ( stripId.arm() != detId.arm() ) continue;
864  if ( striplt.getTx() > minimumStripAngleForTomography_ || striplt.getTy() > minimumStripAngleForTomography_ ) continue;
865  if ( stripId.rp() == CTPPS_FAR_RP_ID ) {
866  channelPlots_[detId].stripTomography_far->Fill( striplt.getX0(), striplt.getY0() + 50*( rechit.getOOTIndex()-1 ) );
867  }
868  else if ( stripId.rp() == CTPPS_NEAR_RP_ID ) {
869  channelPlots_[detId].stripTomography_near->Fill( striplt.getX0(), striplt.getY0() + 50*( rechit.getOOTIndex()-1 ) );
870  }
871  }
872  }
873  }
874  }
875  }
876 
877 }
static const int CTPPS_FED_ID_56
static const int CHANNEL_OF_VFAT_CLOCK
static const double DISPLAY_RESOLUTION_FOR_HITS_MM
void setPlane(uint32_t channel)
void setChannel(uint32_t channel)
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondDigi > > tokenDigi_
bool getErrorId(unsigned short id) const
int bunchCrossing() const
Definition: EventBase.h:64
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack_
void Fill(long long x)
static const int CTPPS_NEAR_RP_ID
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
uint32_t arm() const
Definition: CTPPSDetId.h:52
bool isValid() const
Definition: HandleBase.h:74
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
static const double HPTDC_BIN_WIDTH_NS
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:32
std::unordered_map< unsigned int, PotPlots > potPlots_
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
static const int CTPPS_FAR_RP_ID
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...
std::unordered_map< unsigned int, PlanePlots > planePlots_
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
static const int CTPPS_FED_ID_45
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
void CTPPSDiamondDQMSource::beginLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup  
)
protected

Definition at line 371 of file CTPPSDiamondDQMSource.cc.

References channelPlots_, plotFactory::plot, and SEC_PER_LUMI_SECTION.

372 {
373  for ( auto& plot : channelPlots_ ) {
374  if ( plot.second.hitsCounterPerLumisection != 0 ) {
375  plot.second.hit_rate->Fill( (double) plot.second.hitsCounterPerLumisection / SEC_PER_LUMI_SECTION );
376  }
377  plot.second.hitsCounterPerLumisection = 0;
378  }
379 }
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
static const double SEC_PER_LUMI_SECTION
void CTPPSDiamondDQMSource::bookHistograms ( DQMStore::IBooker ibooker,
const edm::Run ,
const edm::EventSetup  
)
overrideprotected

Definition at line 346 of file CTPPSDiamondDQMSource.cc.

References DQMStore::IBooker::cd(), channelPlots_, CTPPS_DIAMOND_NUM_OF_CHANNELS, CTPPS_DIAMOND_NUM_OF_PLANES, CTPPS_DIAMOND_RP_ID, CTPPS_DIAMOND_STATION_ID, CTPPS_NUM_OF_ARMS, globalPlot_, planePlots_, potPlots_, and DQMStore::IBooker::setCurrentFolder().

347 {
348  ibooker.cd();
349  ibooker.setCurrentFolder( "CTPPS" );
350 
351  globalPlot_= GlobalPlots( ibooker );
352 
353  for ( unsigned short arm = 0; arm < CTPPS_NUM_OF_ARMS; ++arm ) {
355  potPlots_[rpId] = PotPlots( ibooker, rpId );
356  for ( unsigned short pl = 0; pl < CTPPS_DIAMOND_NUM_OF_PLANES; ++pl ) {
358  planePlots_[plId] = PlanePlots( ibooker, plId);
359  for ( unsigned short ch = 0; ch < CTPPS_DIAMOND_NUM_OF_CHANNELS; ++ch ) {
361  channelPlots_[chId] = ChannelPlots( ibooker, chId );
362  }
363  }
364  }
365 }
static const int CTPPS_DIAMOND_NUM_OF_PLANES
void cd(void)
Definition: DQMStore.cc:269
static const int CTPPS_NUM_OF_ARMS
static const int CTPPS_DIAMOND_NUM_OF_CHANNELS
static const int CTPPS_DIAMOND_STATION_ID
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:277
std::unordered_map< unsigned int, PotPlots > potPlots_
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...
std::unordered_map< unsigned int, PlanePlots > planePlots_
static const int CTPPS_DIAMOND_RP_ID
void CTPPSDiamondDQMSource::dqmBeginRun ( const edm::Run ,
const edm::EventSetup  
)
overrideprotected

Definition at line 340 of file CTPPSDiamondDQMSource.cc.

341 {}
void CTPPSDiamondDQMSource::endLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup  
)
protected

Definition at line 882 of file CTPPSDiamondDQMSource.cc.

883 {}
void CTPPSDiamondDQMSource::endRun ( const edm::Run ,
const edm::EventSetup  
)
protected

Definition at line 888 of file CTPPSDiamondDQMSource.cc.

References DEFINE_FWK_MODULE.

889 {}

Member Data Documentation

const int CTPPSDiamondDQMSource::CHANNEL_OF_VFAT_CLOCK = 30
staticprivate

Definition at line 54 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

std::unordered_map<unsigned int, ChannelPlots> CTPPSDiamondDQMSource::channelPlots_
private

Definition at line 163 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), beginLuminosityBlock(), and bookHistograms().

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_NUM_OF_CHANNELS = 12
staticprivate

Definition at line 63 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_NUM_OF_PLANES = 4
staticprivate

Definition at line 62 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_RP_ID = 6
staticprivate

Definition at line 59 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_STATION_ID = 1
staticprivate

Definition at line 58 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const int CTPPSDiamondDQMSource::CTPPS_FAR_RP_ID = 3
staticprivate

Definition at line 61 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

const int CTPPSDiamondDQMSource::CTPPS_FED_ID_45 = 583
staticprivate

Definition at line 64 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

const int CTPPSDiamondDQMSource::CTPPS_FED_ID_56 = 582
staticprivate

Definition at line 65 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

const int CTPPSDiamondDQMSource::CTPPS_NEAR_RP_ID = 2
staticprivate

Definition at line 60 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

const int CTPPSDiamondDQMSource::CTPPS_NUM_OF_ARMS = 2
staticprivate

Definition at line 57 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const double CTPPSDiamondDQMSource::DISPLAY_RESOLUTION_FOR_HITS_MM = 0.1
staticprivate
int CTPPSDiamondDQMSource::EC_difference_45_
private

Definition at line 125 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

int CTPPSDiamondDQMSource::EC_difference_56_
private

Definition at line 125 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

bool CTPPSDiamondDQMSource::excludeMultipleHits_
private

Definition at line 74 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

GlobalPlots CTPPSDiamondDQMSource::globalPlot_
private

Definition at line 87 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and bookHistograms().

const double CTPPSDiamondDQMSource::HPTDC_BIN_WIDTH_NS = 25./1024
staticprivate

Definition at line 56 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

double CTPPSDiamondDQMSource::minimumStripAngleForTomography_
private

Definition at line 75 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

std::unordered_map<unsigned int, PlanePlots> CTPPSDiamondDQMSource::planePlots_
private

Definition at line 142 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and bookHistograms().

std::unordered_map<unsigned int, PotPlots> CTPPSDiamondDQMSource::potPlots_
private

Definition at line 124 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and bookHistograms().

const double CTPPSDiamondDQMSource::SEC_PER_LUMI_SECTION = 23.31
staticprivate

Definition at line 53 of file CTPPSDiamondDQMSource.cc.

Referenced by beginLuminosityBlock().

edm::EDGetTokenT< edm::DetSetVector<CTPPSDiamondRecHit> > CTPPSDiamondDQMSource::tokenDiamondHit_
private

Definition at line 70 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

edm::EDGetTokenT< edm::DetSetVector<CTPPSDiamondLocalTrack> > CTPPSDiamondDQMSource::tokenDiamondTrack_
private

Definition at line 71 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

edm::EDGetTokenT< edm::DetSetVector<CTPPSDiamondDigi> > CTPPSDiamondDQMSource::tokenDigi_
private

Definition at line 69 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

edm::EDGetTokenT< std::vector<TotemFEDInfo> > CTPPSDiamondDQMSource::tokenFEDInfo_
private

Definition at line 72 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

edm::EDGetTokenT< edm::DetSetVector<TotemRPLocalTrack> > CTPPSDiamondDQMSource::tokenLocalTrack_
private

Definition at line 68 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

edm::EDGetTokenT< edm::DetSetVector<TotemVFATStatus> > CTPPSDiamondDQMSource::tokenStatus_
private

Definition at line 67 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

unsigned int CTPPSDiamondDQMSource::verbosity_
private

Definition at line 76 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().