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
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 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 & itemsToGetFrom (BranchType iType) 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

int centralOOT_
 
std::unordered_map< unsigned int, ChannelPlotschannelPlots_
 
int EC_difference_45_
 
int EC_difference_56_
 
bool excludeMultipleHits_
 
GlobalPlots globalPlot_
 
double maximumStripAngleForTomography_
 
double minimumStripAngleForTomography_
 
std::unordered_map< unsigned int, PlanePlotsplanePlots_
 
std::unordered_map< unsigned int, PotPlotspotPlots_
 
std::vector< std::pair< edm::EventRange, int > > runParameters_
 
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 INV_DISPLAY_RESOLUTION_FOR_HITS_MM = 1./DISPLAY_RESOLUTION_FOR_HITS_MM
 
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 38 of file CTPPSDiamondDQMSource.cc.

Constructor & Destructor Documentation

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

Definition at line 318 of file CTPPSDiamondDQMSource.cc.

References edm::ParameterSet::getParameter(), muonDTDigis_cfi::pset, and runParameters_.

318  :
324  tokenFEDInfo_ ( consumes< std::vector<TotemFEDInfo> > ( ps.getParameter<edm::InputTag>( "tagFEDInfo" ) ) ),
325  excludeMultipleHits_ ( ps.getParameter<bool>( "excludeMultipleHits" ) ),
326  minimumStripAngleForTomography_( ps.getParameter<double>( "minimumStripAngleForTomography" ) ),
327  maximumStripAngleForTomography_( ps.getParameter<double>( "maximumStripAngleForTomography" ) ),
328  centralOOT_( -999 ),
329  verbosity_ ( ps.getUntrackedParameter<unsigned int>( "verbosity", 0 ) ),
330  EC_difference_56_( -500 ), EC_difference_45_( -500 )
331 {
332  for ( const auto& pset : ps.getParameter< std::vector<edm::ParameterSet> >( "offsetsOOT" ) ) {
333  runParameters_.emplace_back( std::make_pair( pset.getParameter<edm::EventRange>( "validityRange" ), pset.getParameter<int>( "centralOOT" ) ) );
334  }
335 }
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)
std::vector< std::pair< edm::EventRange, int > > runParameters_
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 339 of file CTPPSDiamondDQMSource.cc.

340 {}

Member Function Documentation

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

Definition at line 397 of file CTPPSDiamondDQMSource.cc.

References CTPPSDetId::arm(), edm::EventBase::bunchCrossing(), centralOOT_, CHANNEL_OF_VFAT_CLOCK, channelPlots_, CTPPS_FAR_RP_ID, CTPPS_FED_ID_45, CTPPS_FED_ID_56, TauDecayModes::dec, EC_difference_45_, EC_difference_56_, excludeMultipleHits_, MonitorElement::Fill(), HPTDCErrorFlags::getErrorId(), globalPlot_, CTPPSDiamondDQMSource::GlobalPlots::h_trackCorr_hor, HPTDC_BIN_WIDTH_NS, mps_fire::i, INV_DISPLAY_RESOLUTION_FOR_HITS_MM, edm::HandleBase::isValid(), maximumStripAngleForTomography_, 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_.

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

References channelPlots_, plotFactory::plot, and SEC_PER_LUMI_SECTION.

385 {
386  for ( auto& plot : channelPlots_ ) {
387  if ( plot.second.hitsCounterPerLumisection != 0 ) {
388  plot.second.hit_rate->Fill( (double) plot.second.hitsCounterPerLumisection / SEC_PER_LUMI_SECTION );
389  }
390  plot.second.hitsCounterPerLumisection = 0;
391  }
392 }
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 359 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().

360 {
361  ibooker.cd();
362  ibooker.setCurrentFolder( "CTPPS" );
363 
364  globalPlot_= GlobalPlots( ibooker );
365 
366  for ( unsigned short arm = 0; arm < CTPPS_NUM_OF_ARMS; ++arm ) {
368  potPlots_[rpId] = PotPlots( ibooker, rpId );
369  for ( unsigned short pl = 0; pl < CTPPS_DIAMOND_NUM_OF_PLANES; ++pl ) {
371  planePlots_[plId] = PlanePlots( ibooker, plId);
372  for ( unsigned short ch = 0; ch < CTPPS_DIAMOND_NUM_OF_CHANNELS; ++ch ) {
374  channelPlots_[chId] = ChannelPlots( ibooker, chId );
375  }
376  }
377  }
378 }
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 iRun,
const edm::EventSetup  
)
overrideprotected

Definition at line 345 of file CTPPSDiamondDQMSource.cc.

References centralOOT_, edm::contains(), edm::RunBase::run(), and runParameters_.

346 {
347  centralOOT_ = -999;
348  for ( const auto& oot : runParameters_ ) {
349  if ( edm::contains( oot.first, edm::EventID( iRun.run(), 0, 1 ) ) ) {
350  centralOOT_ = oot.second; break;
351  }
352  }
353 }
bool contains(EventRange const &lh, EventID const &rh)
Definition: EventRange.cc:38
RunNumber_t run() const
Definition: RunBase.h:40
std::vector< std::pair< edm::EventRange, int > > runParameters_
void CTPPSDiamondDQMSource::endLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup  
)
protected

Definition at line 926 of file CTPPSDiamondDQMSource.cc.

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

Definition at line 932 of file CTPPSDiamondDQMSource.cc.

References DEFINE_FWK_MODULE.

933 {}

Member Data Documentation

int CTPPSDiamondDQMSource::centralOOT_
private

Definition at line 80 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

const int CTPPSDiamondDQMSource::CHANNEL_OF_VFAT_CLOCK = 30
staticprivate

Definition at line 55 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

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

Definition at line 170 of file CTPPSDiamondDQMSource.cc.

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

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_NUM_OF_CHANNELS = 12
staticprivate

Definition at line 65 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_NUM_OF_PLANES = 4
staticprivate

Definition at line 64 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_RP_ID = 6
staticprivate

Definition at line 61 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_STATION_ID = 1
staticprivate

Definition at line 60 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const int CTPPSDiamondDQMSource::CTPPS_FAR_RP_ID = 3
staticprivate

Definition at line 63 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

const int CTPPSDiamondDQMSource::CTPPS_FED_ID_45 = 583
staticprivate

Definition at line 66 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

const int CTPPSDiamondDQMSource::CTPPS_FED_ID_56 = 582
staticprivate

Definition at line 67 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

const int CTPPSDiamondDQMSource::CTPPS_NEAR_RP_ID = 2
staticprivate

Definition at line 62 of file CTPPSDiamondDQMSource.cc.

const int CTPPSDiamondDQMSource::CTPPS_NUM_OF_ARMS = 2
staticprivate

Definition at line 59 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

const double CTPPSDiamondDQMSource::DISPLAY_RESOLUTION_FOR_HITS_MM = 0.1
staticprivate

Definition at line 56 of file CTPPSDiamondDQMSource.cc.

int CTPPSDiamondDQMSource::EC_difference_45_
private

Definition at line 132 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

int CTPPSDiamondDQMSource::EC_difference_56_
private

Definition at line 132 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

bool CTPPSDiamondDQMSource::excludeMultipleHits_
private

Definition at line 76 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

GlobalPlots CTPPSDiamondDQMSource::globalPlot_
private

Definition at line 92 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and bookHistograms().

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

Definition at line 58 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

const double CTPPSDiamondDQMSource::INV_DISPLAY_RESOLUTION_FOR_HITS_MM = 1./DISPLAY_RESOLUTION_FOR_HITS_MM
staticprivate
double CTPPSDiamondDQMSource::maximumStripAngleForTomography_
private

Definition at line 78 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

double CTPPSDiamondDQMSource::minimumStripAngleForTomography_
private

Definition at line 77 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

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

Definition at line 147 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and bookHistograms().

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

Definition at line 131 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and bookHistograms().

std::vector< std::pair<edm::EventRange, int> > CTPPSDiamondDQMSource::runParameters_
private

Definition at line 79 of file CTPPSDiamondDQMSource.cc.

Referenced by CTPPSDiamondDQMSource(), and dqmBeginRun().

const double CTPPSDiamondDQMSource::SEC_PER_LUMI_SECTION = 23.31
staticprivate

Definition at line 54 of file CTPPSDiamondDQMSource.cc.

Referenced by beginLuminosityBlock().

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

Definition at line 72 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

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

Definition at line 73 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

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

Definition at line 71 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

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

Definition at line 74 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

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

Definition at line 70 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

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

Definition at line 69 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

unsigned int CTPPSDiamondDQMSource::verbosity_
private

Definition at line 81 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().