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
 
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
 
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 &&)=default
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
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::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
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<class ProductType >
BranchAliasSetterT< ProductType > produces ()
 declare what type of product will make and with which optional label More...
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces ()
 
template<typename ProductType , Transition B>
BranchAliasSetterT< ProductType > produces ()
 
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)
 
template<Transition B>
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 (std::string instanceName)
 
template<typename ProductType , BranchType B>
BranchAliasSetterT< ProductType > produces (std::string instanceName)
 
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
template<BranchType B = InEvent>
EDConsumerBaseAdaptor< B > consumes (edm::InputTag tag) noexcept
 
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<Transition Tr = Transition::Event>
constexpr auto esConsumes () noexcept
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<Transition Tr = Transition::Event>
auto esConsumes (ESInputTag tag) noexcept
 
template<Transition Tr = Transition::Event>
ESGetTokenGeneric esConsumes (eventsetup::EventSetupRecordKey const &iRecord, eventsetup::DataKey const &iKey)
 Used with EventSetupRecord::doGet. More...
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 

Private Attributes

std::unordered_map< unsigned int, ChannelPlotschannelPlots_
 
GlobalPlots globalPlot_
 
double maximumStripAngleForTomography_
 
double minimumStripAngleForTomography_
 
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 48 of file TotemTimingDQMSource.cc.

Constructor & Destructor Documentation

◆ TotemTimingDQMSource()

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

Definition at line 402 of file TotemTimingDQMSource.cc.

407  // tokenTrack_(consumes<edm::DetSetVector<TotemTimingLocalTrack>>(
408  // ps.getParameter<edm::InputTag>("tagLocalTracks"))),
409  tokenFEDInfo_(consumes<std::vector<TotemFEDInfo>>(ps.getParameter<edm::InputTag>("tagFEDInfo"))),
410  minimumStripAngleForTomography_(ps.getParameter<double>("minimumStripAngleForTomography")),
411  maximumStripAngleForTomography_(ps.getParameter<double>("maximumStripAngleForTomography")),
412  samplesForNoise_(ps.getUntrackedParameter<unsigned int>("samplesForNoise", 5)),
413  verbosity_(ps.getUntrackedParameter<unsigned int>("verbosity", 0)),

◆ ~TotemTimingDQMSource()

TotemTimingDQMSource::~TotemTimingDQMSource ( )
override

Definition at line 417 of file TotemTimingDQMSource.cc.

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 479 of file TotemTimingDQMSource.cc.

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

References amcDumpToRaw_cfi::boardId, channelPlots_, MillePedeFileConverter_cfg::e, geometry, edm::EventSetup::get(), get, mps_fire::i, INV_DISPLAY_RESOLUTION_FOR_HITS_MM, edm::HandleBase::isValid(), LHC_CLOCK_PERIOD_NS, maximumStripAngleForTomography_, minimumStripAngleForTomography_, TotemTimingRecHit::NO_T_AVAILABLE, planePlots_, potPlots_, HI_PhotonSkim_cff::rechits, SAMPIC_ADC_V, samplesForNoise_, TotemTimingDetId::setChannel(), TotemTimingDetId::setPlane(), TotemRPDetId::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, RunInfoPI::valid, verbosity_, verticalShiftBot_, verticalShiftTop_, x, and y.

◆ bookHistograms()

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

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

Definition at line 443 of file TotemTimingDQMSource.cc.

444  {
445  ibooker.cd();
446  ibooker.setCurrentFolder("CTPPS");
447 
448  globalPlot_ = GlobalPlots(ibooker);
449 
450  for (unsigned short arm = 0; arm < CTPPS_NUM_OF_ARMS; ++arm) {
451  for (unsigned short rp = TOTEM_TIMING_TOP_RP_ID; rp <= TOTEM_TIMING_BOT_RP_ID; ++rp) {
453  potPlots_[rpId] = PotPlots(ibooker, rpId);
454  for (unsigned short pl = 0; pl < TOTEM_TIMING_NUM_OF_PLANES; ++pl) {
455  const TotemTimingDetId plId(arm, TOTEM_TIMING_STATION_ID, rp, pl);
456  planePlots_[plId] = PlanePlots(ibooker, plId);
457  for (unsigned short ch = 0; ch < TOTEM_TIMING_NUM_OF_CHANNELS; ++ch) {
458  const TotemTimingDetId chId(arm, TOTEM_TIMING_STATION_ID, rp, pl, ch);
459  channelPlots_[chId] = ChannelPlots(ibooker, chId);
460  }
461  }
462  }
463  }

References dqm::implementation::NavigatorBase::cd(), channelPlots_, CTPPS_NUM_OF_ARMS, globalPlot_, planePlots_, potPlots_, year_2016_postTS2_cff::rpId, 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.

◆ dqmBeginRun()

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

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

Definition at line 421 of file TotemTimingDQMSource.cc.

422  {
423  // Get detector shifts from the geometry (if present)
425  iSetup.get<VeryForwardRealGeometryRecord>().get(geometry_);
426  const CTPPSGeometry *geom = geometry_.product();
429  verticalShiftTop_ = 0;
430  verticalShiftBot_ = 0;
431  {
432  const DetGeomDesc *det_top = geom->sensorNoThrow(detid_top);
433  if (det_top) {
434  verticalShiftTop_ = det_top->translation().y() + det_top->getDiamondDimensions().yHalfWidth;
435  }
436  const DetGeomDesc *det_bot = geom->sensorNoThrow(detid_bot);
437  if (det_bot)
438  verticalShiftBot_ = det_bot->translation().y() + det_bot->getDiamondDimensions().yHalfWidth;
439  }

References relativeConstraints::geom, edm::EventSetup::get(), get, DetGeomDesc::getDiamondDimensions(), edm::ESHandle< T >::product(), TOTEM_TIMING_BOT_RP_ID, TOTEM_TIMING_STATION_ID, TOTEM_TIMING_TOP_RP_ID, DetGeomDesc::translation(), verticalShiftBot_, verticalShiftTop_, and DiamondDimensions::yHalfWidth.

◆ globalBeginLuminosityBlock()

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

Definition at line 467 of file TotemTimingDQMSource.cc.

469  {
470  auto d = std::make_shared<totemds::Cache>();
471  d->hitDistribution2dMap.reserve(potPlots_.size());
472  for (auto &plot : potPlots_)
473  d->hitDistribution2dMap[plot.first] =
474  std::unique_ptr<TH2F>(static_cast<TH2F *>(plot.second.hitDistribution2d_lumisection->getTH2F()->Clone()));
475  return d;

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

◆ globalEndLuminosityBlock()

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

Definition at line 736 of file TotemTimingDQMSource.cc.

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

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

Member Data Documentation

◆ channelPlots_

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

Definition at line 201 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 92 of file TotemTimingDQMSource.cc.

◆ CTPPS_FAR_RP_ID

const int TotemTimingDQMSource::CTPPS_FAR_RP_ID = 3
staticprivate

Definition at line 87 of file TotemTimingDQMSource.cc.

◆ CTPPS_NEAR_RP_ID

const int TotemTimingDQMSource::CTPPS_NEAR_RP_ID = 2
staticprivate

Definition at line 86 of file TotemTimingDQMSource.cc.

◆ CTPPS_NUM_OF_ARMS

const int TotemTimingDQMSource::CTPPS_NUM_OF_ARMS = 2
staticprivate

Definition at line 78 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 70 of file TotemTimingDQMSource.cc.

◆ DQM_FRACTION_OF_EVENTS

const double TotemTimingDQMSource::DQM_FRACTION_OF_EVENTS = 1.
staticprivate

Definition at line 67 of file TotemTimingDQMSource.cc.

◆ globalPlot_

GlobalPlots TotemTimingDQMSource::globalPlot_
private

Definition at line 117 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 69 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 66 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ maximumStripAngleForTomography_

double TotemTimingDQMSource::maximumStripAngleForTomography_
private

Definition at line 102 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ minimumStripAngleForTomography_

double TotemTimingDQMSource::minimumStripAngleForTomography_
private

Definition at line 101 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ planePlots_

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

Definition at line 175 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 77 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 76 of file TotemTimingDQMSource.cc.

◆ SAMPIC_SAMPLING_PERIOD_NS

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

Definition at line 75 of file TotemTimingDQMSource.cc.

◆ samplesForNoise_

unsigned int TotemTimingDQMSource::samplesForNoise_
private

Definition at line 103 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ SEC_PER_LUMI_SECTION

const double TotemTimingDQMSource::SEC_PER_LUMI_SECTION = 23.31
staticprivate

Definition at line 63 of file TotemTimingDQMSource.cc.

◆ SIN_8_DEG

const float TotemTimingDQMSource::SIN_8_DEG = -0.139173
staticprivate

Definition at line 93 of file TotemTimingDQMSource.cc.

◆ timeOfPreviousEvent_

edm::TimeValue_t TotemTimingDQMSource::timeOfPreviousEvent_
private

Definition at line 105 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ tokenDigi_

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

Definition at line 96 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 95 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ tokenRecHit_

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

Definition at line 97 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 80 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ TOTEM_STATION_220

const int TotemTimingDQMSource::TOTEM_STATION_220 = 2
staticprivate

Definition at line 81 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 85 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 84 of file TotemTimingDQMSource.cc.

◆ TOTEM_TIMING_BOT_RP_ID

const int TotemTimingDQMSource::TOTEM_TIMING_BOT_RP_ID = 1
staticprivate

Definition at line 83 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 90 of file TotemTimingDQMSource.cc.

◆ TOTEM_TIMING_FED_ID_56

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

Definition at line 91 of file TotemTimingDQMSource.cc.

◆ TOTEM_TIMING_NUM_OF_CHANNELS

const int TotemTimingDQMSource::TOTEM_TIMING_NUM_OF_CHANNELS = 12
staticprivate

Definition at line 89 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 88 of file TotemTimingDQMSource.cc.

Referenced by bookHistograms().

◆ TOTEM_TIMING_STATION_ID

const int TotemTimingDQMSource::TOTEM_TIMING_STATION_ID = 2
staticprivate

Definition at line 79 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 82 of file TotemTimingDQMSource.cc.

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

◆ verbosity_

unsigned int TotemTimingDQMSource::verbosity_
private

Definition at line 104 of file TotemTimingDQMSource.cc.

Referenced by analyze().

◆ verticalShiftBot_

float TotemTimingDQMSource::verticalShiftBot_
private

Definition at line 107 of file TotemTimingDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

◆ verticalShiftTop_

float TotemTimingDQMSource::verticalShiftTop_
private

Definition at line 107 of file TotemTimingDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

VeryForwardRealGeometryRecord
Event setup record containing the real (actual) geometry information.
Definition: VeryForwardRealGeometryRecord.h:22
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
edm::DetSetVector
Definition: DetSetVector.h:61
DDAxes::y
geometry
ESHandle< TrackerGeometry > geometry
Definition: TkLasBeamFitter.cc:200
mps_fire.i
i
Definition: mps_fire.py:428
amcDumpToRaw_cfi.boardId
boardId
Definition: amcDumpToRaw_cfi.py:9
CTPPSGeometry
The manager class for TOTEM RP geometry.
Definition: CTPPSGeometry.h:29
DetGeomDesc::translation
const Translation & translation() const
Definition: DetGeomDesc.h:73
TotemTimingDQMSource::TOTEM_TIMING_NUM_OF_PLANES
static const int TOTEM_TIMING_NUM_OF_PLANES
Definition: TotemTimingDQMSource.cc:88
edm::LuminosityBlock::index
LuminosityBlockIndex index() const
Definition: LuminosityBlock.cc:27
TotemTimingDQMSource::verticalShiftBot_
float verticalShiftBot_
Definition: TotemTimingDQMSource.cc:107
geometry
Definition: geometry.py:1
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
TotemTimingDQMSource::HIT_RATE_FACTOR
static const double HIT_RATE_FACTOR
Definition: TotemTimingDQMSource.cc:69
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
DDAxes::x
TotemTimingDQMSource::CTPPS_NUM_OF_ARMS
static const int CTPPS_NUM_OF_ARMS
Definition: TotemTimingDQMSource.cc:78
year_2016_postTS2_cff.rpId
rpId
Definition: year_2016_postTS2_cff.py:23
edm::Handle
Definition: AssociativeIterator.h:50
plotFactory.plot
plot
Definition: plotFactory.py:109
TotemTimingDQMSource::channelPlots_
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
Definition: TotemTimingDQMSource.cc:201
TotemTimingDQMSource::timeOfPreviousEvent_
edm::TimeValue_t timeOfPreviousEvent_
Definition: TotemTimingDQMSource.cc:105
TotemTimingDQMSource::planePlots_
std::unordered_map< unsigned int, PlanePlots > planePlots_
Definition: TotemTimingDQMSource.cc:175
TotemTimingDQMSource::TOTEM_TIMING_BOT_RP_ID
static const int TOTEM_TIMING_BOT_RP_ID
Definition: TotemTimingDQMSource.cc:83
dqm::impl::MonitorElement::getTH2F
virtual TH2F * getTH2F()
Definition: MonitorElement.cc:992
TotemTimingDQMSource::verbosity_
unsigned int verbosity_
Definition: TotemTimingDQMSource.cc:104
TotemTimingDQMSource::SAMPIC_ADC_V
static const double SAMPIC_ADC_V
Definition: TotemTimingDQMSource.cc:77
edm::EventSetup::get
T get() const
Definition: EventSetup.h:80
edm::LogProblem
Log< level::Error, true > LogProblem
Definition: MessageLogger.h:131
DetGeomDesc::getDiamondDimensions
const DiamondDimensions & getDiamondDimensions() const
Definition: DetGeomDesc.h:82
dqm::impl::MonitorElement::Reset
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
Definition: MonitorElement.cc:354
edm::ESHandle< CTPPSGeometry >
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
HI_PhotonSkim_cff.rechits
rechits
Definition: HI_PhotonSkim_cff.py:76
TotemTimingDQMSource::globalPlot_
GlobalPlots globalPlot_
Definition: TotemTimingDQMSource.cc:117
TotemTimingDetId
Detector ID class for CTPPS Totem Timing detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bits ...
Definition: TotemTimingDetId.h:26
TotemTimingDetId::setChannel
void setChannel(uint32_t channel)
Definition: TotemTimingDetId.h:58
TotemTimingDQMSource::tokenDigi_
edm::EDGetTokenT< edm::DetSetVector< TotemTimingDigi > > tokenDigi_
Definition: TotemTimingDQMSource.cc:96
TotemTimingDQMSource::tokenLocalTrack_
edm::EDGetTokenT< edm::DetSetVector< TotemRPLocalTrack > > tokenLocalTrack_
Definition: TotemTimingDQMSource.cc:95
CTPPSDetId
Base class for CTPPS detector IDs.
Definition: CTPPSDetId.h:31
DetGeomDesc
Definition: DetGeomDesc.h:49
DiamondDimensions::yHalfWidth
double yHalfWidth
Definition: DetGeomDesc.h:45
TotemTimingDQMSource::INV_DISPLAY_RESOLUTION_FOR_HITS_MM
static const double INV_DISPLAY_RESOLUTION_FOR_HITS_MM
Definition: TotemTimingDQMSource.cc:73
TotemTimingDQMSource::samplesForNoise_
unsigned int samplesForNoise_
Definition: TotemTimingDQMSource.cc:103
TotemTimingDQMSource::TOTEM_STATION_220
static const int TOTEM_STATION_220
Definition: TotemTimingDQMSource.cc:81
TotemTimingDQMSource::TOTEM_STATION_210
static const int TOTEM_STATION_210
Definition: TotemTimingDQMSource.cc:80
get
#define get
TotemTimingRecHit::NO_T_AVAILABLE
Definition: TotemTimingRecHit.h:25
TotemTimingDQMSource::tokenRecHit_
edm::EDGetTokenT< edm::DetSetVector< TotemTimingRecHit > > tokenRecHit_
Definition: TotemTimingDQMSource.cc:97
TotemTimingDQMSource::TOTEM_TIMING_TOP_RP_ID
static const int TOTEM_TIMING_TOP_RP_ID
Definition: TotemTimingDQMSource.cc:82
TotemTimingDQMSource::potPlots_
std::unordered_map< unsigned int, PotPlots > potPlots_
Definition: TotemTimingDQMSource.cc:161
TotemTimingDQMSource::verticalShiftTop_
float verticalShiftTop_
Definition: TotemTimingDQMSource.cc:107
TotemTimingDQMSource::LHC_CLOCK_PERIOD_NS
static const double LHC_CLOCK_PERIOD_NS
Definition: TotemTimingDQMSource.cc:66
TotemTimingDQMSource::GlobalPlots::digiSentPercentage
MonitorElement * digiSentPercentage
Definition: TotemTimingDQMSource.cc:111
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
TotemTimingDQMSource::TOTEM_STRIP_MAX_RP_ID
static const int TOTEM_STRIP_MAX_RP_ID
Definition: TotemTimingDQMSource.cc:85
TotemTimingDQMSource::TOTEM_TIMING_NUM_OF_CHANNELS
static const int TOTEM_TIMING_NUM_OF_CHANNELS
Definition: TotemTimingDQMSource.cc:89
ztail.d
d
Definition: ztail.py:151
cms::Exception
Definition: Exception.h:70
RunInfoPI::valid
Definition: RunInfoPayloadInspectoHelper.h:16
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:153
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
TotemTimingDQMSource::tokenFEDInfo_
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
Definition: TotemTimingDQMSource.cc:99
TotemRPDetId
Detector ID class for TOTEM Si strip detectors.
Definition: TotemRPDetId.h:29
edm::InputTag
Definition: InputTag.h:15
TotemTimingDQMSource::minimumStripAngleForTomography_
double minimumStripAngleForTomography_
Definition: TotemTimingDQMSource.cc:101
TotemTimingDQMSource::TOTEM_TIMING_STATION_ID
static const int TOTEM_TIMING_STATION_ID
Definition: TotemTimingDQMSource.cc:79
TotemTimingDQMSource::maximumStripAngleForTomography_
double maximumStripAngleForTomography_
Definition: TotemTimingDQMSource.cc:102
TotemTimingDetId::setPlane
void setPlane(uint32_t channel)
Definition: TotemTimingDetId.h:51
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37