CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes
TotemTimingDQMSource Class Reference
Inheritance diagram for TotemTimingDQMSource:
DQMOneEDAnalyzer< edm::LuminosityBlockCache< totemds::Cache > > edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args... > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

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

 TotemTimingDQMSource (const edm::ParameterSet &)
 
 ~TotemTimingDQMSource () override
 
- Public Member Functions inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< totemds::Cache > >
void accumulate (edm::Event const &event, edm::EventSetup const &setup) override
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
 DQMOneEDAnalyzer ()
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::Accumulator, Args... >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
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
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- 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
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
std::vector< ESProxyIndex > const & esGetTokenIndicesVector (edm::Transition iTrans) const
 
std::vector< ESRecordIndex > const & esGetTokenRecordIndicesVector (edm::Transition iTrans) const
 
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::array< std::vector< ModuleDescription const *> *, NumBranchTypes > &modulesAll, std::vector< ModuleProcessName > &modulesInPreviousProcesses, 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 selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
 
void dqmBeginRun (const edm::Run &, const edm::EventSetup &) override
 
std::shared_ptr< totemds::CacheglobalBeginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &) const override
 
void globalEndLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &) override
 
- Protected Member Functions inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< totemds::Cache > >
virtual void dqmEndRun (edm::Run const &, edm::EventSetup const &)
 
- Protected Member Functions inherited from edm::ProducerBase
template<Transition Tr = Transition::Event>
auto produces (std::string instanceName) noexcept
 declare what type of product will make and with which optional label More...
 
template<Transition B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<BranchType B>
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
BranchAliasSetter produces (const TypeID &id, std::string instanceName=std::string(), bool recordProvenance=true)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<class ProductType >
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
template<Transition Tr = Transition::Event>
auto produces () noexcept
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< Bconsumes (edm::InputTag tag) noexcept
 
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 ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
constexpr auto esConsumes ()
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag)
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
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)
 
void resetItemsToGetFrom (BranchType iType)
 

Private Attributes

std::unordered_map< unsigned int, ChannelPlotschannelPlots_
 
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecordgeometryToken_
 
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecordgeometryTokenBeginRun_
 
GlobalPlots globalPlot_
 
double maximumStripAngleForTomography_
 
double minimumStripAngleForTomography_
 
bool perLSsaving_
 
std::unordered_map< unsigned int, PlanePlotsplanePlots_
 
std::unordered_map< unsigned int, PotPlotspotPlots_
 
unsigned int samplesForNoise_
 
edm::TimeValue_t timeOfPreviousEvent_
 
edm::EDGetTokenT< edm::DetSetVector< TotemTimingDigi > > tokenDigi_
 
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
 
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack_
 
edm::EDGetTokenT< edm::DetSetVector< TotemTimingRecHit > > tokenRecHit_
 
unsigned int verbosity_
 
float verticalShiftBot_
 
float verticalShiftTop_
 

Static Private Attributes

static const float COS_8_DEG = 0.990268
 
static const int CTPPS_FAR_RP_ID = 3
 
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 DQM_FRACTION_OF_EVENTS = 1.
 
static const double HIT_RATE_FACTOR = DQM_FRACTION_OF_EVENTS / SEC_PER_LUMI_SECTION
 
static const double INV_DISPLAY_RESOLUTION_FOR_HITS_MM = 1. / DISPLAY_RESOLUTION_FOR_HITS_MM
 
static const double LHC_CLOCK_PERIOD_NS = 24.95
 
static const double SAMPIC_ADC_V = 1. / 256
 
static const double SAMPIC_MAX_NUMBER_OF_SAMPLES = 64
 
static const double SAMPIC_SAMPLING_PERIOD_NS = 1. / 7.8e9
 
static const double SEC_PER_LUMI_SECTION = 23.31
 
static const float SIN_8_DEG = -0.139173
 
static const double TOMOGRAPHY_RESOLUTION_MM = 1
 
static const int TOTEM_STATION_210 = 0
 
static const int TOTEM_STATION_220 = 2
 
static const int TOTEM_STRIP_MAX_RP_ID = 5
 
static const int TOTEM_STRIP_MIN_RP_ID = 4
 
static const int TOTEM_TIMING_BOT_RP_ID = 1
 
static const int TOTEM_TIMING_FED_ID_45 = FEDNumbering::MAXTotemRPTimingVerticalFEDID
 
static const int TOTEM_TIMING_FED_ID_56 = FEDNumbering::MINTotemRPTimingVerticalFEDID
 
static const int TOTEM_TIMING_NUM_OF_CHANNELS = 12
 
static const int TOTEM_TIMING_NUM_OF_PLANES = 4
 
static const int TOTEM_TIMING_STATION_ID = 2
 
static const int TOTEM_TIMING_TOP_RP_ID = 0
 

Additional Inherited Members

- Public Types inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< totemds::Cache > >
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
template<typename T >
using BranchAliasSetterT = ProductRegistryHelper::BranchAliasSetterT< T >
 
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex > >
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Attributes inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< totemds::Cache > >
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 49 of file TotemTimingDQMSource.cc.

Constructor & Destructor Documentation

◆ TotemTimingDQMSource()

TotemTimingDQMSource::TotemTimingDQMSource ( const edm::ParameterSet ps)

Definition at line 406 of file TotemTimingDQMSource.cc.

410  tokenRecHit_(
412  // tokenTrack_(consumes<edm::DetSetVector<TotemTimingLocalTrack>>(
413  // ps.getParameter<edm::InputTag>("tagLocalTracks"))),
414  tokenFEDInfo_(consumes<std::vector<TotemFEDInfo>>(ps.getUntrackedParameter<edm::InputTag>("tagFEDInfo"))),
416  geometryTokenBeginRun_(esConsumes<edm::Transition::BeginRun>()),
417  minimumStripAngleForTomography_(ps.getParameter<double>("minimumStripAngleForTomography")),
418  maximumStripAngleForTomography_(ps.getParameter<double>("maximumStripAngleForTomography")),
419  samplesForNoise_(ps.getUntrackedParameter<unsigned int>("samplesForNoise", 5)),
420  perLSsaving_(ps.getUntrackedParameter<bool>("perLSsaving", false)),
421  verbosity_(ps.getUntrackedParameter<unsigned int>("verbosity", 0)),
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< edm::DetSetVector< TotemTimingDigi > > tokenDigi_
edm::EDGetTokenT< edm::DetSetVector< TotemTimingRecHit > > tokenRecHit_
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack_
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > geometryTokenBeginRun_
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
T getUntrackedParameter(std::string const &, T const &) const
edm::TimeValue_t timeOfPreviousEvent_
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > geometryToken_

◆ ~TotemTimingDQMSource()

TotemTimingDQMSource::~TotemTimingDQMSource ( )
override

Definition at line 426 of file TotemTimingDQMSource.cc.

426 {}

Member Function Documentation

◆ analyze()

void TotemTimingDQMSource::analyze ( const edm::Event event,
const edm::EventSetup eventSetup 
)
overrideprotectedvirtual

Reimplemented from DQMOneEDAnalyzer< edm::LuminosityBlockCache< totemds::Cache > >.

Definition at line 489 of file TotemTimingDQMSource.cc.

References amcDumpToRaw_cfi::boardId, channelPlots_, MillePedeFileConverter_cfg::e, options_cfi::eventSetup, geometryToken_, mps_fire::i, INV_DISPLAY_RESOLUTION_FOR_HITS_MM, edm::HandleBase::isValid(), LHC_CLOCK_PERIOD_NS, maximumStripAngleForTomography_, minimumStripAngleForTomography_, TotemTimingRecHit::NO_T_AVAILABLE, perLSsaving_, planePlots_, potPlots_, HI_PhotonSkim_cff::rechits, SAMPIC_ADC_V, samplesForNoise_, TotemTimingDetId::setChannel(), TotemRPDetId::setPlane(), TotemTimingDetId::setPlane(), timeOfPreviousEvent_, tokenDigi_, tokenFEDInfo_, tokenLocalTrack_, tokenRecHit_, TOTEM_STATION_210, TOTEM_STATION_220, TOTEM_STRIP_MAX_RP_ID, TOTEM_TIMING_BOT_RP_ID, TOTEM_TIMING_TOP_RP_ID, validateGeometry_cfg::valid, verbosity_, verticalShiftBot_, verticalShiftTop_, x, and y.

489  {
490  // get event setup data
491  auto const &geometry = eventSetup.getData(geometryToken_);
492 
493  // get event data
495  event.getByToken(tokenLocalTrack_, stripTracks);
496 
498  event.getByToken(tokenDigi_, timingDigis);
499 
501  event.getByToken(tokenFEDInfo_, fedInfo);
502 
504  event.getByToken(tokenRecHit_, timingRecHits);
505 
506  // check validity
507  bool valid = true;
508  valid &= timingDigis.isValid();
509  valid &= fedInfo.isValid();
510 
511  if (!valid) {
512  if (verbosity_) {
513  edm::LogProblem("TotemTimingDQMSource") << "ERROR in TotemTimingDQMSource::analyze > some of the required inputs "
514  "are not valid. Skipping this event.\n"
515  << " timingDigis.isValid = " << timingDigis.isValid() << "\n"
516  << " fedInfo.isValid = " << fedInfo.isValid();
517  }
518 
519  return;
520  }
521 
522  // Using TotemTimingDigi
523  std::set<uint8_t> boardSet;
524  std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
525  std::unordered_map<unsigned int, unsigned int> channelsPerPlaneWithTime;
526 
527  auto lumiCache = luminosityBlockCache(event.getLuminosityBlock().index());
528  for (const auto &digis : *timingDigis) {
529  const TotemTimingDetId detId(digis.detId());
530  TotemTimingDetId detId_pot(digis.detId());
531  detId_pot.setPlane(0);
532  detId_pot.setChannel(0);
533  TotemTimingDetId detId_plane(digis.detId());
534  detId_plane.setChannel(0);
535 
536  for (const auto &digi : digis) {
537  // Pot Plots
538  if (potPlots_.find(detId_pot) != potPlots_.end()) {
539  potPlots_[detId_pot].activityPerBX->Fill(event.bunchCrossing());
540 
541  potPlots_[detId_pot].digiDistribution->Fill(detId.plane(), detId.channel());
542 
543  for (auto it = digi.samplesBegin(); it != digi.samplesEnd(); ++it)
544  potPlots_[detId_pot].dataSamplesRaw->Fill(*it);
545 
546  float boardId = digi.eventInfo().hardwareBoardId() + 0.5 * digi.eventInfo().hardwareSampicId();
547  potPlots_[detId_pot].digiSent->Fill(boardId, digi.hardwareChannelId());
548  if (boardSet.find(digi.eventInfo().hardwareId()) == boardSet.end()) {
549  // This guarantees that every board is counted only once
550  boardSet.insert(digi.eventInfo().hardwareId());
551  std::bitset<16> chMap(digi.eventInfo().channelMap());
552  for (int i = 0; i < 16; ++i) {
553  if (chMap.test(i)) {
554  potPlots_[detId_pot].digiAll->Fill(boardId, i);
555  }
556  }
557  }
558 
559  potPlots_[detId_pot].planesWithDigisSet.insert(detId.plane());
560  }
561 
562  // Plane Plots
563  if (planePlots_.find(detId_plane) != planePlots_.end()) {
564  planePlots_[detId_plane].digiDistribution->Fill(detId.channel());
565 
566  if (channelsPerPlane.find(detId_plane) != channelsPerPlane.end())
567  channelsPerPlane[detId_plane]++;
568  else
569  channelsPerPlane[detId_plane] = 0;
570  }
571 
572  // Channel Plots
573  if (channelPlots_.find(detId) != channelPlots_.end()) {
574  channelPlots_[detId].activityPerBX->Fill(event.bunchCrossing());
575 
576  for (auto it = digi.samplesBegin(); it != digi.samplesEnd(); ++it)
577  channelPlots_[detId].dataSamplesRaw->Fill(*it);
578  for (unsigned short i = 0; i < samplesForNoise_; ++i)
579  channelPlots_[detId].noiseSamples->Fill(SAMPIC_ADC_V * digi.sampleAt(i));
580 
581  unsigned int cellOfMax = std::max_element(digi.samplesBegin(), digi.samplesEnd()) - digi.samplesBegin();
582  channelPlots_[detId].cellOfMax->Fill((int)cellOfMax);
583 
584  if (timeOfPreviousEvent_ != 0)
585  channelPlots_[detId].hitTime->Fill(1e-3 * LHC_CLOCK_PERIOD_NS *
586  (event.time().value() - timeOfPreviousEvent_));
587  ++(lumiCache->hitsCounterMap[detId]);
588  }
589  }
590  }
591  // End digis
592 
593  for (const auto &rechits : *timingRecHits) {
594  const TotemTimingDetId detId(rechits.detId());
595  TotemTimingDetId detId_pot(rechits.detId());
596  detId_pot.setPlane(0);
597  detId_pot.setChannel(0);
598  TotemTimingDetId detId_plane(rechits.detId());
599  detId_plane.setChannel(0);
600 
601  for (const auto &rechit : rechits) {
602  if (potPlots_.find(detId_pot) != potPlots_.end()) {
603  potPlots_[detId_pot].amplitude->Fill(rechit.amplitude());
604 
605  TH2F *hitHistoTmp = potPlots_[detId_pot].hitDistribution2d->getTH2F();
606  TAxis *hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
607  float yCorrected = rechit.y();
608  yCorrected += (detId.rp() == TOTEM_TIMING_TOP_RP_ID) ? verticalShiftTop_ : verticalShiftBot_;
609  float x_shift = detId.plane();
610  x_shift += (rechit.x() > 2) ? 0.25 : 0;
611  int startBin = hitHistoTmpYAxis->FindBin(yCorrected - 0.5 * rechit.yWidth());
612  int numOfBins = rechit.yWidth() * INV_DISPLAY_RESOLUTION_FOR_HITS_MM;
613  for (int i = 0; i < numOfBins; ++i) {
614  potPlots_[detId_pot].hitDistribution2d->Fill(detId.plane() + 0.25 * (rechit.x() > 2),
615  hitHistoTmpYAxis->GetBinCenter(startBin + i));
616  if (!perLSsaving_)
617  potPlots_[detId_pot].hitDistribution2d_lumisection->Fill(x_shift,
618  hitHistoTmpYAxis->GetBinCenter(startBin + i));
619  }
620 
621  //All plots with Time
622  if (rechit.time() != TotemTimingRecHit::NO_T_AVAILABLE) {
623  for (int i = 0; i < numOfBins; ++i)
624  potPlots_[detId_pot].hitDistribution2dWithTime->Fill(detId.plane() + 0.25 * (rechit.x() > 2),
625  hitHistoTmpYAxis->GetBinCenter(startBin + i));
626 
627  potPlots_[detId_pot].recHitTime->Fill(rechit.time());
628  potPlots_[detId_pot].planesWithTimeSet.insert(detId.plane());
629 
630  // Plane Plots
631  if (planePlots_.find(detId_plane) != planePlots_.end()) {
632  // Visualization tricks
633  float x_shift = (rechit.x() > 2) ? 15 : 0;
634  TH1F *hitProfileHistoTmp = planePlots_[detId_plane].hitProfile->getTH1F();
635  int numOfBins = rechit.yWidth() * INV_DISPLAY_RESOLUTION_FOR_HITS_MM;
636  if (detId.rp() == TOTEM_TIMING_TOP_RP_ID) {
637  float yCorrected = rechit.y() + verticalShiftTop_ - 0.5 * rechit.yWidth() + x_shift;
638  int startBin = hitProfileHistoTmp->FindBin(yCorrected);
639  for (int i = 0; i < numOfBins; ++i)
640  hitProfileHistoTmp->Fill(hitProfileHistoTmp->GetBinCenter(startBin + i));
641  } else {
642  float yCorrected = rechit.y() + verticalShiftBot_ + 0.5 * rechit.yWidth() + (15 - x_shift);
643  int startBin = hitProfileHistoTmp->FindBin(yCorrected);
644  int totBins = hitProfileHistoTmp->GetNbinsX();
645  for (int i = 0; i < numOfBins; ++i)
646  hitProfileHistoTmp->Fill(hitProfileHistoTmp->GetBinCenter(totBins - startBin + i));
647  }
648 
649  if (channelsPerPlaneWithTime.find(detId_plane) != channelsPerPlaneWithTime.end())
650  channelsPerPlaneWithTime[detId_plane]++;
651  else
652  channelsPerPlaneWithTime[detId_plane] = 0;
653  }
654 
655  if (channelPlots_.find(detId) != channelPlots_.end()) {
656  potPlots_[detId_pot].tirggerCellTime->Fill(rechit.sampicThresholdTime());
657  channelPlots_[detId].tirggerCellTime->Fill(rechit.sampicThresholdTime());
658  channelPlots_[detId].recHitTime->Fill(rechit.time());
659  channelPlots_[detId].amplitude->Fill(rechit.amplitude());
660  }
661  }
662  }
663  }
664  }
665  // End RecHits
666 
667  // Tomography of timing using strips
668  for (const auto &rechits : *timingRecHits) {
669  const TotemTimingDetId detId(rechits.detId());
670  TotemTimingDetId detId_pot(rechits.detId());
671  detId_pot.setPlane(0);
672  detId_pot.setChannel(0);
673  TotemTimingDetId detId_plane(rechits.detId());
674  detId_plane.setChannel(0);
675 
676  float y_shift = (detId.rp() == TOTEM_TIMING_TOP_RP_ID) ? 20 : 5;
677 
678  for (const auto &rechit : rechits) {
679  if (rechit.time() != TotemTimingRecHit::NO_T_AVAILABLE && potPlots_.find(detId_pot) != potPlots_.end() &&
680  planePlots_.find(detId_plane) != planePlots_.end() && channelPlots_.find(detId) != channelPlots_.end()) {
681  if (stripTracks.isValid()) {
682  for (const auto &ds : *stripTracks) {
683  const CTPPSDetId stripId(ds.detId());
684  // mean position of U and V planes
685  TotemRPDetId plId_V(stripId);
686  plId_V.setPlane(0);
687  TotemRPDetId plId_U(stripId);
688  plId_U.setPlane(1);
689 
690  double rp_x = 0;
691  double rp_y = 0;
692  try {
693  rp_x = (geometry.sensor(plId_V)->translation().x() + geometry.sensor(plId_U)->translation().x()) / 2;
694  rp_y = (geometry.sensor(plId_V)->translation().y() + geometry.sensor(plId_U)->translation().y()) / 2;
695  } catch (const cms::Exception &) {
696  continue;
697  }
698 
699  for (const auto &striplt : ds) {
700  if (striplt.isValid() && stripId.arm() == detId.arm()) {
701  if (striplt.tx() > maximumStripAngleForTomography_ || striplt.ty() > maximumStripAngleForTomography_)
702  continue;
703  if (striplt.tx() < minimumStripAngleForTomography_ || striplt.ty() < minimumStripAngleForTomography_)
704  continue;
705  if (stripId.rp() - detId.rp() == (TOTEM_STRIP_MAX_RP_ID - TOTEM_TIMING_BOT_RP_ID)) {
706  double x = striplt.x0() - rp_x;
707  double y = striplt.y0() - rp_y;
708  if (stripId.station() == TOTEM_STATION_210) {
709  potPlots_[detId_pot].stripTomography210->Fill(x + detId.plane() * 50, y + y_shift);
710  channelPlots_[detId].stripTomography210->Fill(x, y + y_shift);
711  } else if (stripId.station() == TOTEM_STATION_220) {
712  potPlots_[detId_pot].stripTomography220->Fill(x + detId.plane() * 50, y + y_shift);
713  channelPlots_[detId].stripTomography220->Fill(x, y + y_shift);
714  }
715  }
716  }
717  }
718  }
719  }
720  }
721  }
722  }
723 
724  for (auto &plt : potPlots_) {
725  plt.second.planesWithDigis->Fill(plt.second.planesWithDigisSet.size());
726  plt.second.planesWithDigisSet.clear();
727  plt.second.planesWithTime->Fill(plt.second.planesWithTimeSet.size());
728  plt.second.planesWithTimeSet.clear();
729  }
730 
731  for (const auto &plt : channelsPerPlane) {
732  planePlots_[plt.first].hitMultiplicity->Fill(plt.second);
733  }
734  for (const auto &plt : channelsPerPlaneWithTime) {
735  planePlots_[plt.first].hitMultiplicityWithTime->Fill(plt.second);
736  }
737 
738  timeOfPreviousEvent_ = event.time().value();
739 }
static const double INV_DISPLAY_RESOLUTION_FOR_HITS_MM
static const double LHC_CLOCK_PERIOD_NS
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:30
static const int TOTEM_STRIP_MAX_RP_ID
static const int TOTEM_STATION_210
void setChannel(uint32_t channel)
edm::EDGetTokenT< edm::DetSetVector< TotemTimingDigi > > tokenDigi_
std::unordered_map< unsigned int, PlanePlots > planePlots_
edm::EDGetTokenT< edm::DetSetVector< TotemTimingRecHit > > tokenRecHit_
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack_
static const int TOTEM_STATION_220
void setPlane(uint32_t channel)
static const int TOTEM_TIMING_TOP_RP_ID
std::unordered_map< unsigned int, PotPlots > potPlots_
static const double SAMPIC_ADC_V
bool isValid() const
Definition: HandleBase.h:70
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:32
edm::TimeValue_t timeOfPreviousEvent_
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
static const int TOTEM_TIMING_BOT_RP_ID
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > geometryToken_
Definition: event.py:1
Log< level::Error, true > LogProblem
Detector ID class for CTPPS Totem Timing detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bits ...

◆ bookHistograms()

void TotemTimingDQMSource::bookHistograms ( DQMStore::IBooker ibooker,
const edm::Run ,
const edm::EventSetup  
)
overrideprotectedvirtual

Implements DQMOneEDAnalyzer< edm::LuminosityBlockCache< totemds::Cache > >.

Definition at line 451 of file TotemTimingDQMSource.cc.

References protons_cff::arm, dqm::implementation::NavigatorBase::cd(), channelPlots_, CTPPS_NUM_OF_ARMS, globalPlot_, planePlots_, potPlots_, dqm::implementation::NavigatorBase::setCurrentFolder(), TOTEM_TIMING_BOT_RP_ID, TOTEM_TIMING_NUM_OF_CHANNELS, TOTEM_TIMING_NUM_OF_PLANES, TOTEM_TIMING_STATION_ID, and TOTEM_TIMING_TOP_RP_ID.

451  {
452  ibooker.cd();
453  ibooker.setCurrentFolder("CTPPS");
454 
455  globalPlot_ = GlobalPlots(ibooker);
456 
457  for (unsigned short arm = 0; arm < CTPPS_NUM_OF_ARMS; ++arm) {
458  for (unsigned short rp = TOTEM_TIMING_TOP_RP_ID; rp <= TOTEM_TIMING_BOT_RP_ID; ++rp) {
460  potPlots_[rpId] = PotPlots(ibooker, rpId);
461  for (unsigned short pl = 0; pl < TOTEM_TIMING_NUM_OF_PLANES; ++pl) {
462  const TotemTimingDetId plId(arm, TOTEM_TIMING_STATION_ID, rp, pl);
463  planePlots_[plId] = PlanePlots(ibooker, plId);
464  for (unsigned short ch = 0; ch < TOTEM_TIMING_NUM_OF_CHANNELS; ++ch) {
465  const TotemTimingDetId chId(arm, TOTEM_TIMING_STATION_ID, rp, pl, ch);
466  channelPlots_[chId] = ChannelPlots(ibooker, chId);
467  }
468  }
469  }
470  }
471 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
std::unordered_map< unsigned int, PlanePlots > planePlots_
static const int CTPPS_NUM_OF_ARMS
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
static const int TOTEM_TIMING_STATION_ID
static const int TOTEM_TIMING_TOP_RP_ID
std::unordered_map< unsigned int, PotPlots > potPlots_
static const int TOTEM_TIMING_NUM_OF_PLANES
static const int TOTEM_TIMING_BOT_RP_ID
static const int TOTEM_TIMING_NUM_OF_CHANNELS
Detector ID class for CTPPS Totem Timing detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bits ...

◆ dqmBeginRun()

void TotemTimingDQMSource::dqmBeginRun ( const edm::Run iRun,
const edm::EventSetup iSetup 
)
overrideprotectedvirtual

Reimplemented from DQMOneEDAnalyzer< edm::LuminosityBlockCache< totemds::Cache > >.

Definition at line 430 of file TotemTimingDQMSource.cc.

References relativeConstraints::geom, geometryTokenBeginRun_, edm::EventSetup::getData(), DetGeomDesc::getDiamondDimensions(), TOTEM_TIMING_BOT_RP_ID, TOTEM_TIMING_STATION_ID, TOTEM_TIMING_TOP_RP_ID, DetGeomDesc::translation(), verticalShiftBot_, verticalShiftTop_, and DiamondDimensions::yHalfWidth.

430  {
431  // Get detector shifts from the geometry (if present)
432  auto const &geom = iSetup.getData(geometryTokenBeginRun_);
433 
436  verticalShiftTop_ = 0;
437  verticalShiftBot_ = 0;
438  {
439  const DetGeomDesc *det_top = geom.sensorNoThrow(detid_top);
440  if (det_top) {
441  verticalShiftTop_ = det_top->translation().y() + det_top->getDiamondDimensions().yHalfWidth;
442  }
443  const DetGeomDesc *det_bot = geom.sensorNoThrow(detid_bot);
444  if (det_bot)
445  verticalShiftBot_ = det_bot->translation().y() + det_bot->getDiamondDimensions().yHalfWidth;
446  }
447 }
const Translation & translation() const
Definition: DetGeomDesc.h:80
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > geometryTokenBeginRun_
static const int TOTEM_TIMING_STATION_ID
static const int TOTEM_TIMING_TOP_RP_ID
const DiamondDimensions & getDiamondDimensions() const
Definition: DetGeomDesc.h:90
static const int TOTEM_TIMING_BOT_RP_ID
Detector ID class for CTPPS Totem Timing detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bits ...

◆ globalBeginLuminosityBlock()

std::shared_ptr< totemds::Cache > TotemTimingDQMSource::globalBeginLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup  
) const
overrideprotected

Definition at line 475 of file TotemTimingDQMSource.cc.

References ztail::d, perLSsaving_, plotFactory::plot, and potPlots_.

476  {
477  auto d = std::make_shared<totemds::Cache>();
478  d->hitDistribution2dMap.reserve(potPlots_.size());
479  if (!perLSsaving_) {
480  for (auto &plot : potPlots_)
481  d->hitDistribution2dMap[plot.first] =
482  std::unique_ptr<TH2F>(static_cast<TH2F *>(plot.second.hitDistribution2d_lumisection->getTH2F()->Clone()));
483  }
484  return d;
485 }
std::unordered_map< unsigned int, PotPlots > potPlots_
d
Definition: ztail.py:151

◆ globalEndLuminosityBlock()

void TotemTimingDQMSource::globalEndLuminosityBlock ( const edm::LuminosityBlock iLumi,
const edm::EventSetup  
)
overrideprotected

Definition at line 743 of file TotemTimingDQMSource.cc.

References CTPPSDetId::arm(), TotemTimingDetId::channel(), channelPlots_, TotemTimingDQMSource::GlobalPlots::digiSentPercentage, dqm::impl::MonitorElement::getTH2F(), globalPlot_, HIT_RATE_FACTOR, edm::LuminosityBlock::index(), perLSsaving_, TotemTimingDetId::plane(), plotFactory::plot, potPlots_, dqm::impl::MonitorElement::Reset(), and CTPPSDetId::rp().

743  {
744  auto lumiCache = luminosityBlockCache(iLumi.index());
745  if (!perLSsaving_) {
746  for (auto &plot : potPlots_) {
747  *(plot.second.hitDistribution2d_lumisection->getTH2F()) = *(lumiCache->hitDistribution2dMap[plot.first]);
748  }
749 
751  TH2F *hitHistoGlobalTmp = globalPlot_.digiSentPercentage->getTH2F();
752  for (auto &plot : potPlots_) {
753  TH2F *hitHistoTmp = plot.second.digiSentPercentage->getTH2F();
754  TH2F *histoSent = plot.second.digiSent->getTH2F();
755  TH2F *histoAll = plot.second.digiAll->getTH2F();
756 
757  hitHistoTmp->Divide(histoSent, histoAll);
758  hitHistoTmp->Scale(100);
759  hitHistoGlobalTmp->Add(hitHistoTmp, 1);
760 
761  plot.second.baseline->Reset();
762  plot.second.noiseRMS->Reset();
763  plot.second.meanAmplitude->Reset();
764  plot.second.cellOfMax->Reset();
765  plot.second.hitRate->Reset();
766  TotemTimingDetId rpId(plot.first);
767  for (auto &chPlot : channelPlots_) {
768  TotemTimingDetId chId(chPlot.first);
769  if (chId.arm() == rpId.arm() && chId.rp() == rpId.rp()) {
770  plot.second.baseline->Fill(chId.plane(), chId.channel(), chPlot.second.noiseSamples->getTH1F()->GetMean());
771  plot.second.noiseRMS->Fill(chId.plane(), chId.channel(), chPlot.second.noiseSamples->getTH1F()->GetRMS());
772  plot.second.meanAmplitude->Fill(chId.plane(), chId.channel(), chPlot.second.amplitude->getTH1F()->GetMean());
773  plot.second.cellOfMax->Fill(chId.plane(), chId.channel(), chPlot.second.cellOfMax->getTH1F()->GetMean());
774  auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[chPlot.first];
775  plot.second.hitRate->Fill(chId.plane(), chId.channel(), (double)hitsCounterPerLumisection * HIT_RATE_FACTOR);
776  }
777  }
778  }
779 
780  for (auto &plot : channelPlots_) {
781  auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[plot.first];
782  if (hitsCounterPerLumisection != 0) {
783  plot.second.hitRate->Fill((double)hitsCounterPerLumisection * HIT_RATE_FACTOR);
784  }
785  }
786  }
787 }
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
static const double HIT_RATE_FACTOR
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
std::unordered_map< unsigned int, PotPlots > potPlots_
LuminosityBlockIndex index() const
Detector ID class for CTPPS Totem Timing detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bits ...

Member Data Documentation

◆ channelPlots_

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

Definition at line 205 of file TotemTimingDQMSource.cc.

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

◆ COS_8_DEG

const float TotemTimingDQMSource::COS_8_DEG = 0.990268
staticprivate

Definition at line 93 of file TotemTimingDQMSource.cc.

◆ CTPPS_FAR_RP_ID

const int TotemTimingDQMSource::CTPPS_FAR_RP_ID = 3
staticprivate

Definition at line 88 of file TotemTimingDQMSource.cc.

◆ CTPPS_NEAR_RP_ID

const int TotemTimingDQMSource::CTPPS_NEAR_RP_ID = 2
staticprivate

Definition at line 87 of file TotemTimingDQMSource.cc.

◆ CTPPS_NUM_OF_ARMS

const int TotemTimingDQMSource::CTPPS_NUM_OF_ARMS = 2
staticprivate

Definition at line 79 of file TotemTimingDQMSource.cc.

Referenced by bookHistograms().

◆ DISPLAY_RESOLUTION_FOR_HITS_MM

const double TotemTimingDQMSource::DISPLAY_RESOLUTION_FOR_HITS_MM = 0.1
staticprivate

Definition at line 71 of file TotemTimingDQMSource.cc.

◆ DQM_FRACTION_OF_EVENTS

const double TotemTimingDQMSource::DQM_FRACTION_OF_EVENTS = 1.
staticprivate

Definition at line 68 of file TotemTimingDQMSource.cc.

◆ geometryToken_

edm::ESGetToken<CTPPSGeometry, VeryForwardRealGeometryRecord> TotemTimingDQMSource::geometryToken_
private

Definition at line 101 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ geometryTokenBeginRun_

edm::ESGetToken<CTPPSGeometry, VeryForwardRealGeometryRecord> TotemTimingDQMSource::geometryTokenBeginRun_
private

Definition at line 102 of file TotemTimingDQMSource.cc.

Referenced by dqmBeginRun().

◆ globalPlot_

GlobalPlots TotemTimingDQMSource::globalPlot_
private

Definition at line 121 of file TotemTimingDQMSource.cc.

Referenced by bookHistograms(), and globalEndLuminosityBlock().

◆ HIT_RATE_FACTOR

const double TotemTimingDQMSource::HIT_RATE_FACTOR = DQM_FRACTION_OF_EVENTS / SEC_PER_LUMI_SECTION
staticprivate

Definition at line 70 of file TotemTimingDQMSource.cc.

Referenced by globalEndLuminosityBlock().

◆ INV_DISPLAY_RESOLUTION_FOR_HITS_MM

const double TotemTimingDQMSource::INV_DISPLAY_RESOLUTION_FOR_HITS_MM = 1. / DISPLAY_RESOLUTION_FOR_HITS_MM
staticprivate

◆ LHC_CLOCK_PERIOD_NS

const double TotemTimingDQMSource::LHC_CLOCK_PERIOD_NS = 24.95
staticprivate

Definition at line 67 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ maximumStripAngleForTomography_

double TotemTimingDQMSource::maximumStripAngleForTomography_
private

Definition at line 105 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ minimumStripAngleForTomography_

double TotemTimingDQMSource::minimumStripAngleForTomography_
private

Definition at line 104 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ perLSsaving_

bool TotemTimingDQMSource::perLSsaving_
private

◆ planePlots_

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

Definition at line 179 of file TotemTimingDQMSource.cc.

Referenced by analyze(), and bookHistograms().

◆ potPlots_

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

◆ SAMPIC_ADC_V

const double TotemTimingDQMSource::SAMPIC_ADC_V = 1. / 256
staticprivate

Definition at line 78 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ SAMPIC_MAX_NUMBER_OF_SAMPLES

const double TotemTimingDQMSource::SAMPIC_MAX_NUMBER_OF_SAMPLES = 64
staticprivate

Definition at line 77 of file TotemTimingDQMSource.cc.

◆ SAMPIC_SAMPLING_PERIOD_NS

const double TotemTimingDQMSource::SAMPIC_SAMPLING_PERIOD_NS = 1. / 7.8e9
staticprivate

Definition at line 76 of file TotemTimingDQMSource.cc.

◆ samplesForNoise_

unsigned int TotemTimingDQMSource::samplesForNoise_
private

Definition at line 106 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ SEC_PER_LUMI_SECTION

const double TotemTimingDQMSource::SEC_PER_LUMI_SECTION = 23.31
staticprivate

Definition at line 64 of file TotemTimingDQMSource.cc.

◆ SIN_8_DEG

const float TotemTimingDQMSource::SIN_8_DEG = -0.139173
staticprivate

Definition at line 94 of file TotemTimingDQMSource.cc.

◆ timeOfPreviousEvent_

edm::TimeValue_t TotemTimingDQMSource::timeOfPreviousEvent_
private

Definition at line 109 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ tokenDigi_

edm::EDGetTokenT<edm::DetSetVector<TotemTimingDigi> > TotemTimingDQMSource::tokenDigi_
private

Definition at line 97 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ tokenFEDInfo_

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

Definition at line 99 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ tokenLocalTrack_

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

Definition at line 96 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ tokenRecHit_

edm::EDGetTokenT<edm::DetSetVector<TotemTimingRecHit> > TotemTimingDQMSource::tokenRecHit_
private

Definition at line 98 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ TOMOGRAPHY_RESOLUTION_MM

const double TotemTimingDQMSource::TOMOGRAPHY_RESOLUTION_MM = 1
staticprivate

◆ TOTEM_STATION_210

const int TotemTimingDQMSource::TOTEM_STATION_210 = 0
staticprivate

Definition at line 81 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ TOTEM_STATION_220

const int TotemTimingDQMSource::TOTEM_STATION_220 = 2
staticprivate

Definition at line 82 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ TOTEM_STRIP_MAX_RP_ID

const int TotemTimingDQMSource::TOTEM_STRIP_MAX_RP_ID = 5
staticprivate

Definition at line 86 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ TOTEM_STRIP_MIN_RP_ID

const int TotemTimingDQMSource::TOTEM_STRIP_MIN_RP_ID = 4
staticprivate

Definition at line 85 of file TotemTimingDQMSource.cc.

◆ TOTEM_TIMING_BOT_RP_ID

const int TotemTimingDQMSource::TOTEM_TIMING_BOT_RP_ID = 1
staticprivate

Definition at line 84 of file TotemTimingDQMSource.cc.

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

◆ TOTEM_TIMING_FED_ID_45

const int TotemTimingDQMSource::TOTEM_TIMING_FED_ID_45 = FEDNumbering::MAXTotemRPTimingVerticalFEDID
staticprivate

Definition at line 91 of file TotemTimingDQMSource.cc.

◆ TOTEM_TIMING_FED_ID_56

const int TotemTimingDQMSource::TOTEM_TIMING_FED_ID_56 = FEDNumbering::MINTotemRPTimingVerticalFEDID
staticprivate

Definition at line 92 of file TotemTimingDQMSource.cc.

◆ TOTEM_TIMING_NUM_OF_CHANNELS

const int TotemTimingDQMSource::TOTEM_TIMING_NUM_OF_CHANNELS = 12
staticprivate

Definition at line 90 of file TotemTimingDQMSource.cc.

Referenced by bookHistograms().

◆ TOTEM_TIMING_NUM_OF_PLANES

const int TotemTimingDQMSource::TOTEM_TIMING_NUM_OF_PLANES = 4
staticprivate

Definition at line 89 of file TotemTimingDQMSource.cc.

Referenced by bookHistograms().

◆ TOTEM_TIMING_STATION_ID

const int TotemTimingDQMSource::TOTEM_TIMING_STATION_ID = 2
staticprivate

Definition at line 80 of file TotemTimingDQMSource.cc.

Referenced by bookHistograms(), and dqmBeginRun().

◆ TOTEM_TIMING_TOP_RP_ID

const int TotemTimingDQMSource::TOTEM_TIMING_TOP_RP_ID = 0
staticprivate

Definition at line 83 of file TotemTimingDQMSource.cc.

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

◆ verbosity_

unsigned int TotemTimingDQMSource::verbosity_
private

Definition at line 108 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ verticalShiftBot_

float TotemTimingDQMSource::verticalShiftBot_
private

Definition at line 111 of file TotemTimingDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

◆ verticalShiftTop_

float TotemTimingDQMSource::verticalShiftTop_
private

Definition at line 111 of file TotemTimingDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().