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
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  // tokenTrack_(consumes<edm::DetSetVector<TotemTimingLocalTrack>>(
411  // ps.getParameter<edm::InputTag>("tagLocalTracks"))),
412  tokenFEDInfo_(consumes<std::vector<TotemFEDInfo>>(ps.getParameter<edm::InputTag>("tagFEDInfo"))),
414  geometryTokenBeginRun_(esConsumes<edm::Transition::BeginRun>()),
415  minimumStripAngleForTomography_(ps.getParameter<double>("minimumStripAngleForTomography")),
416  maximumStripAngleForTomography_(ps.getParameter<double>("maximumStripAngleForTomography")),
417  samplesForNoise_(ps.getUntrackedParameter<unsigned int>("samplesForNoise", 5)),
418  perLSsaving_(ps.getUntrackedParameter<bool>("perLSsaving", false)),
419  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 424 of file TotemTimingDQMSource.cc.

424 {}

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 487 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.

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

449  {
450  ibooker.cd();
451  ibooker.setCurrentFolder("CTPPS");
452 
453  globalPlot_ = GlobalPlots(ibooker);
454 
455  for (unsigned short arm = 0; arm < CTPPS_NUM_OF_ARMS; ++arm) {
456  for (unsigned short rp = TOTEM_TIMING_TOP_RP_ID; rp <= TOTEM_TIMING_BOT_RP_ID; ++rp) {
458  potPlots_[rpId] = PotPlots(ibooker, rpId);
459  for (unsigned short pl = 0; pl < TOTEM_TIMING_NUM_OF_PLANES; ++pl) {
460  const TotemTimingDetId plId(arm, TOTEM_TIMING_STATION_ID, rp, pl);
461  planePlots_[plId] = PlanePlots(ibooker, plId);
462  for (unsigned short ch = 0; ch < TOTEM_TIMING_NUM_OF_CHANNELS; ++ch) {
463  const TotemTimingDetId chId(arm, TOTEM_TIMING_STATION_ID, rp, pl, ch);
464  channelPlots_[chId] = ChannelPlots(ibooker, chId);
465  }
466  }
467  }
468  }
469 }
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
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 428 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.

428  {
429  // Get detector shifts from the geometry (if present)
430  auto const &geom = iSetup.getData(geometryTokenBeginRun_);
431 
434  verticalShiftTop_ = 0;
435  verticalShiftBot_ = 0;
436  {
437  const DetGeomDesc *det_top = geom.sensorNoThrow(detid_top);
438  if (det_top) {
439  verticalShiftTop_ = det_top->translation().y() + det_top->getDiamondDimensions().yHalfWidth;
440  }
441  const DetGeomDesc *det_bot = geom.sensorNoThrow(detid_bot);
442  if (det_bot)
443  verticalShiftBot_ = det_bot->translation().y() + det_bot->getDiamondDimensions().yHalfWidth;
444  }
445 }
const Translation & translation() const
Definition: DetGeomDesc.h:80
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > geometryTokenBeginRun_
static const int TOTEM_TIMING_STATION_ID
bool getData(T &iHolder) const
Definition: EventSetup.h:122
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 473 of file TotemTimingDQMSource.cc.

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

474  {
475  auto d = std::make_shared<totemds::Cache>();
476  d->hitDistribution2dMap.reserve(potPlots_.size());
477  if (!perLSsaving_) {
478  for (auto &plot : potPlots_)
479  d->hitDistribution2dMap[plot.first] =
480  std::unique_ptr<TH2F>(static_cast<TH2F *>(plot.second.hitDistribution2d_lumisection->getTH2F()->Clone()));
481  }
482  return d;
483 }
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 741 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().

741  {
742  auto lumiCache = luminosityBlockCache(iLumi.index());
743  if (!perLSsaving_) {
744  for (auto &plot : potPlots_) {
745  *(plot.second.hitDistribution2d_lumisection->getTH2F()) = *(lumiCache->hitDistribution2dMap[plot.first]);
746  }
747 
749  TH2F *hitHistoGlobalTmp = globalPlot_.digiSentPercentage->getTH2F();
750  for (auto &plot : potPlots_) {
751  TH2F *hitHistoTmp = plot.second.digiSentPercentage->getTH2F();
752  TH2F *histoSent = plot.second.digiSent->getTH2F();
753  TH2F *histoAll = plot.second.digiAll->getTH2F();
754 
755  hitHistoTmp->Divide(histoSent, histoAll);
756  hitHistoTmp->Scale(100);
757  hitHistoGlobalTmp->Add(hitHistoTmp, 1);
758 
759  plot.second.baseline->Reset();
760  plot.second.noiseRMS->Reset();
761  plot.second.meanAmplitude->Reset();
762  plot.second.cellOfMax->Reset();
763  plot.second.hitRate->Reset();
764  TotemTimingDetId rpId(plot.first);
765  for (auto &chPlot : channelPlots_) {
766  TotemTimingDetId chId(chPlot.first);
767  if (chId.arm() == rpId.arm() && chId.rp() == rpId.rp()) {
768  plot.second.baseline->Fill(chId.plane(), chId.channel(), chPlot.second.noiseSamples->getTH1F()->GetMean());
769  plot.second.noiseRMS->Fill(chId.plane(), chId.channel(), chPlot.second.noiseSamples->getTH1F()->GetRMS());
770  plot.second.meanAmplitude->Fill(chId.plane(), chId.channel(), chPlot.second.amplitude->getTH1F()->GetMean());
771  plot.second.cellOfMax->Fill(chId.plane(), chId.channel(), chPlot.second.cellOfMax->getTH1F()->GetMean());
772  auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[chPlot.first];
773  plot.second.hitRate->Fill(chId.plane(), chId.channel(), (double)hitsCounterPerLumisection * HIT_RATE_FACTOR);
774  }
775  }
776  }
777 
778  for (auto &plot : channelPlots_) {
779  auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[plot.first];
780  if (hitsCounterPerLumisection != 0) {
781  plot.second.hitRate->Fill((double)hitsCounterPerLumisection * HIT_RATE_FACTOR);
782  }
783  }
784  }
785 }
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().