CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Protected Member Functions | Private Attributes | Static Private Attributes
CTPPSDiamondDQMSource Class Reference
Inheritance diagram for CTPPSDiamondDQMSource:
DQMOneEDAnalyzer< edm::LuminosityBlockCache< dds::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

 CTPPSDiamondDQMSource (const edm::ParameterSet &)
 
 ~CTPPSDiamondDQMSource () override
 
- Public Member Functions inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< dds::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::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
 
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< dds::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< dds::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

int centralOOT_
 
std::unordered_map< unsigned int, ChannelPlotschannelPlots_
 
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecordctppsGeometryEventToken_
 
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecordctppsGeometryRunToken_
 
int EC_difference_45_
 
int EC_difference_56_
 
bool excludeMultipleHits_
 
GlobalPlots globalPlot_
 
double horizontalShiftBwDiamondPixels_
 
double horizontalShiftOfDiamond_
 
std::unordered_map< unsigned int, PlanePlotsplanePlots_
 
std::unordered_map< unsigned int, PotPlotspotPlots_
 
std::vector< std::pair< edm::EventRange, int > > runParameters_
 
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
 
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
 
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondDigi > > tokenDigi_
 
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
 
edm::EDGetTokenT< edm::DetSetVector< CTPPSPixelLocalTrack > > tokenPixelTrack_
 
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
 
unsigned int verbosity_
 

Static Private Attributes

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

Additional Inherited Members

- Public Types inherited from DQMOneEDAnalyzer< edm::LuminosityBlockCache< dds::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< dds::Cache > >
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 67 of file CTPPSDiamondDQMSource.cc.

Constructor & Destructor Documentation

◆ CTPPSDiamondDQMSource()

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

Definition at line 475 of file CTPPSDiamondDQMSource.cc.

485  tokenFEDInfo_(consumes<std::vector<TotemFEDInfo>>(ps.getParameter<edm::InputTag>("tagFEDInfo"))),
486  ctppsGeometryRunToken_(esConsumes<CTPPSGeometry, VeryForwardRealGeometryRecord, edm::Transition::BeginRun>()),
487  ctppsGeometryEventToken_(esConsumes<CTPPSGeometry, VeryForwardRealGeometryRecord>()),
488  excludeMultipleHits_(ps.getParameter<bool>("excludeMultipleHits")),
489  centralOOT_(-999),
490  verbosity_(ps.getUntrackedParameter<unsigned int>("verbosity", 0)),
491  EC_difference_56_(-500),
492  EC_difference_45_(-500) {
493  for (const auto& pset : ps.getParameter<std::vector<edm::ParameterSet>>("offsetsOOT")) {
494  runParameters_.emplace_back(
495  std::make_pair(pset.getParameter<edm::EventRange>("validityRange"), pset.getParameter<int>("centralOOT")));
496  }

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

◆ ~CTPPSDiamondDQMSource()

CTPPSDiamondDQMSource::~CTPPSDiamondDQMSource ( )
override

Definition at line 500 of file CTPPSDiamondDQMSource.cc.

Member Function Documentation

◆ analyze()

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

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

Definition at line 564 of file CTPPSDiamondDQMSource.cc.

565  {
566  // get event data
568  event.getByToken(tokenStatus_, diamondVFATStatus);
569 
571  event.getByToken(tokenPixelTrack_, pixelTracks);
572 
574  event.getByToken(tokenDigi_, diamondDigis);
575 
577  event.getByToken(tokenFEDInfo_, fedInfo);
578 
580  event.getByToken(tokenDiamondHit_, diamondRecHits);
581 
583  event.getByToken(tokenDiamondTrack_, diamondLocalTracks);
584 
585  const CTPPSGeometry* ctppsGeometry = &iSetup.getData(ctppsGeometryEventToken_);
586 
587  // check validity
588  bool valid = true;
589  valid &= diamondVFATStatus.isValid();
590  valid &= pixelTracks.isValid();
591  valid &= diamondDigis.isValid();
592  valid &= fedInfo.isValid();
593  valid &= diamondRecHits.isValid();
594  valid &= diamondLocalTracks.isValid();
595 
596  if (!valid) {
597  if (verbosity_) {
598  edm::LogProblem("CTPPSDiamondDQMSource")
599  << "ERROR in CTPPSDiamondDQMSource::analyze > some of the required inputs are not valid. Skipping this "
600  "event.\n"
601  << " diamondVFATStatus.isValid = " << diamondVFATStatus.isValid() << "\n"
602  << " pixelTracks.isValid = " << pixelTracks.isValid() << "\n"
603  << " diamondDigis.isValid = " << diamondDigis.isValid() << "\n"
604  << " fedInfo.isValid = " << fedInfo.isValid() << "\n"
605  << " diamondRecHits.isValid = " << diamondRecHits.isValid() << "\n"
606  << " diamondLocalTracks.isValid = " << diamondLocalTracks.isValid();
607  }
608 
609  return;
610  }
611 
612  //------------------------------
613  // RP Plots
614  //------------------------------
615 
616  //------------------------------
617  // Correlation Plots
618  //------------------------------
619 
620  // Using CTPPSDiamondDigi
621  for (const auto& digis : *diamondDigis) {
622  const CTPPSDiamondDetId detId(digis.detId());
623  CTPPSDiamondDetId detId_pot(digis.detId());
624 
625  for (const auto& digi : digis) {
626  detId_pot.setPlane(0);
627  detId_pot.setChannel(0);
628  if (detId.channel() == CHANNEL_OF_VFAT_CLOCK)
629  continue;
630  if (potPlots_.find(detId_pot) == potPlots_.end())
631  continue;
632  //Leading without trailing investigation
633  if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
634  ++(potPlots_[detId_pot].HitCounter);
635  if (digi.leadingEdge() != 0) {
636  potPlots_[detId_pot].leadingEdgeCumulative_all->Fill(HPTDC_BIN_WIDTH_NS * digi.leadingEdge());
637  }
638  if (digi.leadingEdge() != 0 && digi.trailingEdge() == 0) {
639  ++(potPlots_[detId_pot].LeadingOnlyCounter);
640  potPlots_[detId_pot].leadingEdgeCumulative_le->Fill(HPTDC_BIN_WIDTH_NS * digi.leadingEdge());
641  }
642  if (digi.leadingEdge() == 0 && digi.trailingEdge() != 0) {
643  ++(potPlots_[detId_pot].TrailingOnlyCounter);
644  potPlots_[detId_pot].trailingEdgeCumulative_te->Fill(HPTDC_BIN_WIDTH_NS * digi.trailingEdge());
645  }
646  if (digi.leadingEdge() != 0 && digi.trailingEdge() != 0) {
647  ++(potPlots_[detId_pot].CompleteCounter);
648  potPlots_[detId_pot].leadingTrailingCorrelationPot->Fill(HPTDC_BIN_WIDTH_NS * digi.leadingEdge(),
649  HPTDC_BIN_WIDTH_NS * digi.trailingEdge());
650  }
651  }
652 
653  // HPTDC Errors
654  const HPTDCErrorFlags hptdcErrors = digi.hptdcErrorFlags();
655  if (detId.channel() == 6 || detId.channel() == 7) // ch6 for HPTDC 0 and ch7 for HPTDC 1
656  {
657  int verticalIndex = 2 * detId.plane() + (detId.channel() - 6);
658  for (unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
659  if (hptdcErrors.errorId(hptdcErrorIndex - 1))
660  potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(hptdcErrorIndex, verticalIndex);
661  }
662  if (digi.multipleHit())
663  ++(potPlots_[detId_pot].MHCounter);
664  }
665  }
666 
667  // EC Errors
668  for (const auto& vfat_status : *diamondVFATStatus) {
669  const CTPPSDiamondDetId detId(vfat_status.detId());
670  CTPPSDiamondDetId detId_pot(vfat_status.detId());
671  detId_pot.setPlane(0);
672  detId_pot.setChannel(0);
673  for (const auto& status : vfat_status) {
674  if (!status.isOK())
675  continue;
676  if (potPlots_.find(detId_pot) == potPlots_.end())
677  continue;
678  if (channelPlots_.find(detId) == channelPlots_.end())
679  continue;
680 
681  // Check Event Number
682  for (const auto& optorx : *fedInfo) {
683  if (detId.arm() == 1 && optorx.fedId() == CTPPS_FED_ID_56) {
684  potPlots_[detId_pot].ECCheck->Fill((int)((optorx.lv1() & 0xFF) - ((unsigned int)status.ec() & 0xFF)) & 0xFF);
685  if ((static_cast<int>((optorx.lv1() & 0xFF) - status.ec()) != EC_difference_56_) &&
686  (static_cast<uint8_t>((optorx.lv1() & 0xFF) - status.ec()) < 128))
687  EC_difference_56_ = static_cast<int>(optorx.lv1() & 0xFF) - (static_cast<unsigned int>(status.ec()) & 0xFF);
688  if (EC_difference_56_ != 1 && EC_difference_56_ != -500 && std::abs(EC_difference_56_) < 127) {
689  if (detId.channel() == 6 || detId.channel() == 7)
690  potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(16, 2 * detId.plane() + (detId.channel() - 6));
691  if (verbosity_)
692  edm::LogProblem("CTPPSDiamondDQMSource")
693  << "FED " << CTPPS_FED_ID_56 << ": ECError at EV: 0x" << std::hex << optorx.lv1() << "\t\tVFAT EC: 0x"
694  << static_cast<unsigned int>(status.ec()) << "\twith ID: " << std::dec << detId
695  << "\tdiff: " << EC_difference_56_;
696  }
697  } else if (detId.arm() == 0 && optorx.fedId() == CTPPS_FED_ID_45) {
698  potPlots_[detId_pot].ECCheck->Fill((int)((optorx.lv1() & 0xFF) - status.ec()) & 0xFF);
699  if ((static_cast<int>((optorx.lv1() & 0xFF) - status.ec()) != EC_difference_45_) &&
700  (static_cast<uint8_t>((optorx.lv1() & 0xFF) - status.ec()) < 128))
701  EC_difference_45_ = static_cast<int>(optorx.lv1() & 0xFF) - (static_cast<unsigned int>(status.ec()) & 0xFF);
702  if (EC_difference_45_ != 1 && EC_difference_45_ != -500 && std::abs(EC_difference_45_) < 127) {
703  if (detId.channel() == 6 || detId.channel() == 7)
704  potPlots_[detId_pot].HPTDCErrorFlags_2D->Fill(16, 2 * detId.plane() + (detId.channel() - 6));
705  if (verbosity_)
706  edm::LogProblem("CTPPSDiamondDQMSource")
707  << "FED " << CTPPS_FED_ID_45 << ": ECError at EV: 0x" << std::hex << optorx.lv1() << "\t\tVFAT EC: 0x"
708  << static_cast<unsigned int>(status.ec()) << "\twith ID: " << std::dec << detId
709  << "\tdiff: " << EC_difference_45_;
710  }
711  }
712  }
713  }
714  }
715 
716  // Using CTPPSDiamondRecHit
717  std::unordered_map<unsigned int, std::set<unsigned int>> planes;
718  std::unordered_map<unsigned int, std::set<unsigned int>> planes_inclusive;
719 
720  auto lumiCache = luminosityBlockCache(event.getLuminosityBlock().index());
721  for (const auto& rechits : *diamondRecHits) {
722  CTPPSDiamondDetId detId_pot(rechits.detId());
723  detId_pot.setPlane(0);
724  detId_pot.setChannel(0);
725  const CTPPSDiamondDetId detId(rechits.detId());
726 
727  for (const auto& rechit : rechits) {
728  planes_inclusive[detId_pot].insert(detId.plane());
729  if (excludeMultipleHits_ && rechit.multipleHits() > 0)
730  continue;
731  if (rechit.toT() != 0 && centralOOT_ != -999 && rechit.ootIndex() == centralOOT_)
732  planes[detId_pot].insert(detId.plane());
733 
734  if (potPlots_.find(detId_pot) == potPlots_.end())
735  continue;
736 
737  float UFSDShift = 0.0;
738  if (rechit.yWidth() < 3)
739  UFSDShift = 0.5; // Display trick for UFSD that have 2 pixels with same X
740 
741  if (rechit.toT() != 0 && centralOOT_ != -999 && rechit.ootIndex() == centralOOT_) {
742  TH2F* hitHistoTmp = potPlots_[detId_pot].hitDistribution2d->getTH2F();
743  TAxis* hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
744  int startBin = hitHistoTmpYAxis->FindBin(rechit.x() - horizontalShiftOfDiamond_ - 0.5 * rechit.xWidth());
745  int numOfBins = rechit.xWidth() * INV_DISPLAY_RESOLUTION_FOR_HITS_MM;
746  for (int i = 0; i < numOfBins; ++i) {
747  hitHistoTmp->Fill(detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin + i));
748  }
749 
750  hitHistoTmp = lumiCache->hitDistribution2dMap[detId_pot].get();
751  hitHistoTmpYAxis = hitHistoTmp->GetYaxis();
752  startBin = hitHistoTmpYAxis->FindBin(rechit.x() - horizontalShiftOfDiamond_ - 0.5 * rechit.xWidth());
753  numOfBins = rechit.xWidth() * INV_DISPLAY_RESOLUTION_FOR_HITS_MM;
754  for (int i = 0; i < numOfBins; ++i) {
755  hitHistoTmp->Fill(detId.plane() + UFSDShift, hitHistoTmpYAxis->GetBinCenter(startBin + i));
756  }
757  }
758 
759  if (rechit.toT() != 0) {
760  // Both
761  potPlots_[detId_pot].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
762  potPlots_[detId_pot].timeOverThresholdCumulativePot->Fill(rechit.toT());
763 
764  TH2F* hitHistoOOTTmp = potPlots_[detId_pot].hitDistribution2dOOT->getTH2F();
765  TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
766  int startBin = hitHistoOOTTmpYAxis->FindBin(rechit.x() - horizontalShiftOfDiamond_ - 0.5 * rechit.xWidth());
767  int numOfBins = rechit.xWidth() * INV_DISPLAY_RESOLUTION_FOR_HITS_MM;
768  for (int i = 0; i < numOfBins; ++i) {
769  hitHistoOOTTmp->Fill(detId.plane() + 0.25 * rechit.ootIndex(),
770  hitHistoOOTTmpYAxis->GetBinCenter(startBin + i));
771  }
772  } else {
773  if (rechit.ootIndex() != CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING) {
774  // Only leading
775  TH2F* hitHistoOOTTmp = potPlots_[detId_pot].hitDistribution2dOOT_le->getTH2F();
776  TAxis* hitHistoOOTTmpYAxis = hitHistoOOTTmp->GetYaxis();
777  int startBin = hitHistoOOTTmpYAxis->FindBin(rechit.x() - horizontalShiftOfDiamond_ - 0.5 * rechit.xWidth());
778  int numOfBins = rechit.xWidth() * INV_DISPLAY_RESOLUTION_FOR_HITS_MM;
779  for (int i = 0; i < numOfBins; ++i) {
780  hitHistoOOTTmp->Fill(detId.plane() + 0.25 * rechit.ootIndex(),
781  hitHistoOOTTmpYAxis->GetBinCenter(startBin + i));
782  }
783  }
784  }
785  if (rechit.ootIndex() != CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING &&
786  potPlots_[detId_pot].activity_per_bx.count(rechit.ootIndex()) > 0)
787  potPlots_[detId_pot].activity_per_bx.at(rechit.ootIndex())->Fill(event.bunchCrossing());
788  }
789  }
790 
791  for (const auto& plt : potPlots_) {
792  plt.second.activePlanes->Fill(planes[plt.first].size());
793  plt.second.activePlanesInclusive->Fill(planes_inclusive[plt.first].size());
794  }
795 
796  // Using CTPPSDiamondLocalTrack
797  for (const auto& tracks : *diamondLocalTracks) {
798  CTPPSDiamondDetId detId_pot(tracks.detId());
799  detId_pot.setPlane(0);
800  detId_pot.setChannel(0);
801  const CTPPSDiamondDetId detId(tracks.detId());
802 
803  for (const auto& track : tracks) {
804  if (!track.isValid())
805  continue;
807  continue;
808  if (excludeMultipleHits_ && track.multipleHits() > 0)
809  continue;
810  if (potPlots_.find(detId_pot) == potPlots_.end())
811  continue;
812 
813  TH2F* trackHistoOOTTmp = potPlots_[detId_pot].trackDistributionOOT->getTH2F();
814  TAxis* trackHistoOOTTmpYAxis = trackHistoOOTTmp->GetYaxis();
815  int startBin = trackHistoOOTTmpYAxis->FindBin(track.x0() - horizontalShiftOfDiamond_ - track.x0Sigma());
816  int numOfBins = 2 * track.x0Sigma() * INV_DISPLAY_RESOLUTION_FOR_HITS_MM;
817  for (int i = 0; i < numOfBins; ++i) {
818  trackHistoOOTTmp->Fill(track.ootIndex(), trackHistoOOTTmpYAxis->GetBinCenter(startBin + i));
819  }
820 
821  if (centralOOT_ != -999 && track.ootIndex() == centralOOT_) {
822  TH1F* trackHistoInTimeTmp = potPlots_[detId_pot].trackDistribution->getTH1F();
823  int startBin = trackHistoInTimeTmp->FindBin(track.x0() - horizontalShiftOfDiamond_ - track.x0Sigma());
824  int numOfBins = 2 * track.x0Sigma() * INV_DISPLAY_RESOLUTION_FOR_HITS_MM;
825  for (int i = 0; i < numOfBins; ++i) {
826  trackHistoInTimeTmp->Fill(trackHistoInTimeTmp->GetBinCenter(startBin + i));
827  }
828  }
829  }
830  }
831 
832  // Channel efficiency using CTPPSDiamondLocalTrack
833  for (const auto& tracks : *diamondLocalTracks) {
834  CTPPSDiamondDetId detId_pot(tracks.detId());
835  detId_pot.setPlane(0);
836  detId_pot.setChannel(0);
837  for (const auto& track : tracks) {
838  // Find hits and planes in the track
839  int numOfHits = 0;
840  std::set<int> planesInTrackSet;
841  for (const auto& vec : *diamondRecHits) {
842  const CTPPSDiamondDetId detid(vec.detId());
843  if (detid.arm() != detId_pot.arm())
844  continue;
845 
846  for (const auto& hit : vec) {
847  // first check if the hit contributes to the track
848  if (track.containsHit(hit)) {
849  ++numOfHits;
850  planesInTrackSet.insert(detid.plane());
851  }
852  }
853  }
854 
855  if (numOfHits > 0 && numOfHits <= 10 && planesInTrackSet.size() > 2) {
856  for (int plane = 0; plane < 4; ++plane) {
857  for (int channel = 0; channel < 12; ++channel) {
858  int map_index = plane * 100 + channel;
859  if (potPlots_[detId_pot].effDoublecountingChMap.find(map_index) ==
860  potPlots_[detId_pot].effDoublecountingChMap.end()) {
861  potPlots_[detId_pot].effTriplecountingChMap[map_index] = 0;
862  potPlots_[detId_pot].effDoublecountingChMap[map_index] = 0;
863  }
864  CTPPSDiamondDetId detId(detId_pot.arm(), CTPPS_DIAMOND_STATION_ID, CTPPS_DIAMOND_RP_ID, plane, channel);
865  if (channelAlignedWithTrack(ctppsGeometry, detId, track, 0.2)) {
866  // Channel should fire
867  ++(potPlots_[detId_pot].effDoublecountingChMap[map_index]);
868  for (const auto& rechits : *diamondRecHits) {
869  CTPPSDiamondDetId detId_hit(rechits.detId());
870  if (detId_hit == detId) {
871  for (const auto& rechit : rechits) {
872  if (track.containsHit(rechit, 1)) {
873  // Channel fired
874  ++(potPlots_[detId_pot].effTriplecountingChMap[map_index]);
875  }
876  }
877  }
878  }
879  }
880  }
881  }
882  }
883  }
884  }
885 
886  // Tomography of diamonds using pixel
887  for (const auto& rechits : *diamondRecHits) {
888  CTPPSDiamondDetId detId_pot(rechits.detId());
889  detId_pot.setPlane(0);
890  detId_pot.setChannel(0);
891  const CTPPSDiamondDetId detId(rechits.detId());
892  for (const auto& rechit : rechits) {
893  if (excludeMultipleHits_ && rechit.multipleHits() > 0)
894  continue;
895  if (rechit.toT() == 0)
896  continue;
897  if (!pixelTracks.isValid())
898  continue;
899  if (potPlots_.find(detId_pot) == potPlots_.end())
900  continue;
901 
902  for (const auto& ds : *pixelTracks) {
903  if (ds.size() > 1)
904  continue;
905  const CTPPSPixelDetId pixId(ds.detId());
906  if (pixId.station() != CTPPS_PIXEL_STATION_ID || pixId.rp() != CTPPS_FAR_RP_ID)
907  continue;
908  for (const auto& lt : ds) {
909  if (lt.isValid() && pixId.arm() == detId_pot.arm()) {
910  if (rechit.ootIndex() != CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING && rechit.ootIndex() >= 0 &&
911  potPlots_[detId_pot].pixelTomographyAll.count(rechit.ootIndex()) > 0 &&
912  lt.x0() - horizontalShiftBwDiamondPixels_ < 24)
913  potPlots_[detId_pot]
914  .pixelTomographyAll.at(rechit.ootIndex())
915  ->Fill(lt.x0() - horizontalShiftBwDiamondPixels_ + 25 * detId.plane(), lt.y0());
916  }
917  }
918  }
919  }
920  }
921 
922  //------------------------------
923  // Clock Plots
924  //------------------------------
925  // Commented out to save space in the DQM files, but code should be kept
926  // for ( const auto& digis : *diamondDigis ) {
927  // const CTPPSDiamondDetId detId( digis.detId() );
928  // CTPPSDiamondDetId detId_pot( digis.detId() );
929  // if ( detId.channel() == CHANNEL_OF_VFAT_CLOCK ) {
930  // detId_pot.setPlane( 0 );
931  // detId_pot.setChannel( 0 );
932  // for ( const auto& digi : digis ) {
933  // if ( digi.leadingEdge() != 0 ) {
934  // if ( detId.plane() == 1 ) {
935  // potPlots_[detId_pot].clock_Digi1_le->Fill( HPTDC_BIN_WIDTH_NS * digi.leadingEdge() );
936  // potPlots_[detId_pot].clock_Digi1_te->Fill( HPTDC_BIN_WIDTH_NS * digi.trailingEdge() );
937  // }
938  // if ( detId.plane() == 3 ) {
939  // potPlots_[detId_pot].clock_Digi3_le->Fill( HPTDC_BIN_WIDTH_NS * digi.leadingEdge() );
940  // potPlots_[detId_pot].clock_Digi3_te->Fill( HPTDC_BIN_WIDTH_NS * digi.trailingEdge() );
941  // }
942  // }
943  // }
944  // }
945  // }
946 
947  //------------------------------
948  // Plane Plots
949  //------------------------------
950 
951  // Using CTPPSDiamondDigi
952  std::unordered_map<unsigned int, unsigned int> channelsPerPlane;
953  for (const auto& digis : *diamondDigis) {
954  const CTPPSDiamondDetId detId(digis.detId());
955  CTPPSDiamondDetId detId_plane(digis.detId());
956  for (const auto& digi : digis) {
957  detId_plane.setChannel(0);
958  if (detId.channel() == CHANNEL_OF_VFAT_CLOCK)
959  continue;
960  if (planePlots_.find(detId_plane) == planePlots_.end())
961  continue;
962 
963  if (digi.leadingEdge() != 0) {
964  planePlots_[detId_plane].digiProfileCumulativePerPlane->Fill(detId.channel());
965  if (channelsPerPlane.find(detId_plane) != channelsPerPlane.end())
966  channelsPerPlane[detId_plane]++;
967  else
968  channelsPerPlane[detId_plane] = 0;
969  }
970  }
971  }
972 
973  for (const auto& plt : channelsPerPlane) {
974  planePlots_[plt.first].hit_multiplicity->Fill(plt.second);
975  }
976 
977  // Using CTPPSDiamondRecHit
978  for (const auto& rechits : *diamondRecHits) {
979  CTPPSDiamondDetId detId_plane(rechits.detId());
980  detId_plane.setChannel(0);
981  for (const auto& rechit : rechits) {
982  if (excludeMultipleHits_ && rechit.multipleHits() > 0)
983  continue;
984  if (rechit.toT() == 0)
985  continue;
986  if (planePlots_.find(detId_plane) != planePlots_.end()) {
987  if (centralOOT_ != -999 && rechit.ootIndex() == centralOOT_) {
988  TH1F* hitHistoTmp = planePlots_[detId_plane].hitProfile->getTH1F();
989  int startBin = hitHistoTmp->FindBin(rechit.x() - horizontalShiftOfDiamond_ - 0.5 * rechit.xWidth());
990  int numOfBins = rechit.xWidth() * INV_DISPLAY_RESOLUTION_FOR_HITS_MM;
991  for (int i = 0; i < numOfBins; ++i) {
992  hitHistoTmp->Fill(hitHistoTmp->GetBinCenter(startBin + i));
993  }
994  }
995  }
996  }
997  }
998 
999  //Tomography of diamonds using pixel and Efficiency WRT Pixels
1000  for (const auto& ds : *pixelTracks) {
1001  const CTPPSPixelDetId pixId(ds.detId());
1002  if (pixId.station() != CTPPS_PIXEL_STATION_ID || pixId.rp() != CTPPS_FAR_RP_ID)
1003  continue;
1004  if (ds.size() > 1)
1005  continue;
1006  for (const auto& lt : ds) {
1007  if (lt.isValid()) {
1008  // For efficieny
1010  potPlots_[detId_pot].pixelTracksMap.Fill(lt.x0() - horizontalShiftBwDiamondPixels_, lt.y0());
1011 
1012  std::set<CTPPSDiamondDetId> planesWitHits_set;
1013  for (const auto& rechits : *diamondRecHits) {
1014  CTPPSDiamondDetId detId_plane(rechits.detId());
1015  detId_plane.setChannel(0);
1016  for (const auto& rechit : rechits) {
1017  if (excludeMultipleHits_ && rechit.multipleHits() > 0)
1018  continue;
1019  if (rechit.ootIndex() == CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING || rechit.toT() == 0)
1020  continue;
1021  if (planePlots_.find(detId_plane) == planePlots_.end())
1022  continue;
1023  if (pixId.arm() == detId_plane.arm() && lt.x0() - horizontalShiftBwDiamondPixels_ < 24) {
1024  planePlots_[detId_plane].pixelTomography_far->Fill(
1025  lt.x0() - horizontalShiftBwDiamondPixels_ + 25 * rechit.ootIndex(), lt.y0());
1026  if (centralOOT_ != -999 && rechit.ootIndex() == centralOOT_)
1027  planesWitHits_set.insert(detId_plane);
1028  }
1029  }
1030  }
1031 
1032  for (auto& planeId : planesWitHits_set)
1033  planePlots_[planeId].pixelTracksMapWithDiamonds.Fill(lt.x0() - horizontalShiftBwDiamondPixels_, lt.y0());
1034  }
1035  }
1036  }
1037 
1038  //------------------------------
1039  // Channel Plots
1040  //------------------------------
1041 
1042  // digi profile cumulative
1043  for (const auto& digis : *diamondDigis) {
1044  const CTPPSDiamondDetId detId(digis.detId());
1045  for (const auto& digi : digis) {
1046  if (detId.channel() == CHANNEL_OF_VFAT_CLOCK)
1047  continue;
1048  if (channelPlots_.find(detId) != channelPlots_.end()) {
1049  // HPTDC Errors
1050  const HPTDCErrorFlags hptdcErrors = digi.hptdcErrorFlags();
1051  for (unsigned short hptdcErrorIndex = 1; hptdcErrorIndex < 16; ++hptdcErrorIndex)
1052  if (hptdcErrors.errorId(hptdcErrorIndex - 1))
1053  channelPlots_[detId].HPTDCErrorFlags->Fill(hptdcErrorIndex);
1054  if (digi.multipleHit())
1055  ++(channelPlots_[detId].MHCounter);
1056 
1057  // Check dropped trailing edges
1058  if (digi.leadingEdge() != 0 || digi.trailingEdge() != 0) {
1059  ++(channelPlots_[detId].HitCounter);
1060  if (digi.leadingEdge() != 0 && digi.trailingEdge() == 0) {
1061  ++(channelPlots_[detId].LeadingOnlyCounter);
1062  channelPlots_[detId].leadingEdgeCumulative_le->Fill(HPTDC_BIN_WIDTH_NS * digi.leadingEdge());
1063  }
1064  if (digi.leadingEdge() == 0 && digi.trailingEdge() != 0) {
1065  ++(channelPlots_[detId].TrailingOnlyCounter);
1066  channelPlots_[detId].trailingEdgeCumulative_te->Fill(HPTDC_BIN_WIDTH_NS * digi.trailingEdge());
1067  }
1068  if (digi.leadingEdge() != 0 && digi.trailingEdge() != 0) {
1069  ++(channelPlots_[detId].CompleteCounter);
1070  channelPlots_[detId].LeadingTrailingCorrelationPerChannel->Fill(HPTDC_BIN_WIDTH_NS * digi.leadingEdge(),
1071  HPTDC_BIN_WIDTH_NS * digi.trailingEdge());
1072  }
1073  }
1074  }
1075  }
1076  }
1077 
1078  // Using CTPPSDiamondRecHit
1079 
1080  for (const auto& rechits : *diamondRecHits) {
1081  CTPPSDiamondDetId detId(rechits.detId());
1082  for (const auto& rechit : rechits) {
1083  if (excludeMultipleHits_ && rechit.multipleHits() > 0)
1084  continue;
1085  if (channelPlots_.find(detId) != channelPlots_.end()) {
1086  if (rechit.ootIndex() != CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING && rechit.toT() != 0) {
1087  channelPlots_[detId].leadingEdgeCumulative_both->Fill(rechit.time() + 25 * rechit.ootIndex());
1088  channelPlots_[detId].TimeOverThresholdCumulativePerChannel->Fill(rechit.toT());
1089  }
1090  ++(lumiCache->hitsCounterMap[detId]);
1091  }
1092 
1093  if (rechit.ootIndex() != CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING &&
1094  channelPlots_[detId].activity_per_bx.count(rechit.ootIndex()) > 0)
1095  channelPlots_[detId].activity_per_bx.at(rechit.ootIndex())->Fill(event.bunchCrossing());
1096  }
1097  }
1098 
1099  // Tomography of diamonds using pixel
1100  for (const auto& rechits : *diamondRecHits) {
1101  const CTPPSDiamondDetId detId(rechits.detId());
1102  for (const auto& rechit : rechits) {
1103  if (excludeMultipleHits_ && rechit.multipleHits() > 0)
1104  continue;
1105  if (rechit.ootIndex() == CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING || rechit.toT() == 0)
1106  continue;
1107  if (!pixelTracks.isValid())
1108  continue;
1109  if (channelPlots_.find(detId) == channelPlots_.end())
1110  continue;
1111 
1112  for (const auto& ds : *pixelTracks) {
1113  const CTPPSPixelDetId pixId(ds.detId());
1114  if (pixId.station() != CTPPS_PIXEL_STATION_ID || pixId.rp() != CTPPS_FAR_RP_ID)
1115  continue;
1116  if (ds.size() > 1)
1117  continue;
1118  for (const auto& lt : ds) {
1119  if (lt.isValid() && pixId.arm() == detId.arm() && lt.x0() - horizontalShiftBwDiamondPixels_ < 24)
1120  channelPlots_[detId].pixelTomography_far->Fill(
1121  lt.x0() - horizontalShiftBwDiamondPixels_ + 25 * rechit.ootIndex(), lt.y0());
1122  }
1123  }
1124  }
1125  }

References funct::abs(), centralOOT_, CHANNEL_OF_VFAT_CLOCK, channelAlignedWithTrack(), channelPlots_, CTPPS_DIAMOND_RP_ID, CTPPS_DIAMOND_STATION_ID, CTPPS_FAR_RP_ID, CTPPS_FED_ID_45, CTPPS_FED_ID_56, CTPPS_PIXEL_STATION_ID, ctppsGeometryEventToken_, TauDecayModes::dec, EC_difference_45_, EC_difference_56_, HPTDCErrorFlags::errorId(), excludeMultipleHits_, HcalObjRepresent::Fill(), edm::EventSetup::getData(), horizontalShiftBwDiamondPixels_, horizontalShiftOfDiamond_, HPTDC_BIN_WIDTH_NS, mps_fire::i, edm::eventsetup::heterocontainer::insert(), INV_DISPLAY_RESOLUTION_FOR_HITS_MM, edm::HandleBase::isValid(), BeamSpotProblemMonitor_cff::pixelTracks, planePlots_, potPlots_, HI_PhotonSkim_cff::rechits, CTPPSDiamondDetId::setChannel(), CTPPSDiamondDetId::setPlane(), mps_update::status, CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING, tokenDiamondHit_, tokenDiamondTrack_, tokenDigi_, tokenFEDInfo_, tokenPixelTrack_, tokenStatus_, HLT_FULL_cff::track, tracks, RunInfoPI::valid, and verbosity_.

◆ bookHistograms()

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

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

Definition at line 530 of file CTPPSDiamondDQMSource.cc.

531  {
532  ibooker.cd();
533  ibooker.setCurrentFolder("CTPPS");
534 
535  globalPlot_ = GlobalPlots(ibooker);
536 
537  for (unsigned short arm = 0; arm < CTPPS_NUM_OF_ARMS; ++arm) {
539  potPlots_[rpId] = PotPlots(ibooker, rpId);
540  for (unsigned short pl = 0; pl < CTPPS_DIAMOND_NUM_OF_PLANES; ++pl) {
542  planePlots_[plId] = PlanePlots(ibooker, plId);
543  for (unsigned short ch = 0; ch < CTPPS_DIAMOND_NUM_OF_CHANNELS; ++ch) {
545  channelPlots_[chId] = ChannelPlots(ibooker, chId);
546  }
547  }
548  }

References protons_cff::arm, dqm::implementation::NavigatorBase::cd(), channelPlots_, CTPPS_DIAMOND_NUM_OF_CHANNELS, CTPPS_DIAMOND_NUM_OF_PLANES, CTPPS_DIAMOND_RP_ID, CTPPS_DIAMOND_STATION_ID, CTPPS_NUM_OF_ARMS, globalPlot_, planePlots_, potPlots_, profile_2016_postTS2_cff::rpId, and dqm::implementation::NavigatorBase::setCurrentFolder().

◆ dqmBeginRun()

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

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

Definition at line 504 of file CTPPSDiamondDQMSource.cc.

505  {
506  centralOOT_ = -999;
507  for (const auto& oot : runParameters_) {
508  if (edm::contains(oot.first, edm::EventID(iRun.run(), 0, 1))) {
509  centralOOT_ = oot.second;
510  break;
511  }
512  }
513 
514  // Get detector shifts from the geometry
517  const DetGeomDesc* det = geom.sensor(detid);
519 
520  // Rough alignement of pixel detector for diamond thomography
522  if (iRun.run() > 300000) { //Pixel installed
523  det = geom.sensor(pixid);
526  }

References centralOOT_, edm::contains(), CTPPS_DIAMOND_RP_ID, CTPPS_DIAMOND_STATION_ID, CTPPS_FAR_RP_ID, CTPPS_PIXEL_STATION_ID, ctppsGeometryRunToken_, relativeConstraints::geom, edm::EventSetup::getData(), DetGeomDesc::getDiamondDimensions(), horizontalShiftBwDiamondPixels_, horizontalShiftOfDiamond_, edm::RunBase::run(), runParameters_, DetGeomDesc::translation(), and DiamondDimensions::xHalfWidth.

◆ globalBeginLuminosityBlock()

std::shared_ptr< dds::Cache > CTPPSDiamondDQMSource::globalBeginLuminosityBlock ( const edm::LuminosityBlock ,
const edm::EventSetup  
) const
overrideprotected

Definition at line 552 of file CTPPSDiamondDQMSource.cc.

554  {
555  auto d = std::make_shared<dds::Cache>();
556  d->hitDistribution2dMap.reserve(potPlots_.size());
557  for (auto& plot : potPlots_)
558  d->hitDistribution2dMap[plot.first] =
559  std::unique_ptr<TH2F>(static_cast<TH2F*>(plot.second.hitDistribution2d_lumisection->getTH2F()->Clone()));
560  return d;

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

◆ globalEndLuminosityBlock()

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

Definition at line 1129 of file CTPPSDiamondDQMSource.cc.

1130  {
1131  auto lumiCache = luminosityBlockCache(iLumi.index());
1132  for (auto& plot : potPlots_) {
1133  *(plot.second.hitDistribution2d_lumisection->getTH2F()) = *(lumiCache->hitDistribution2dMap[plot.first]);
1134  }
1135  for (auto& plot : channelPlots_) {
1136  auto hitsCounterPerLumisection = lumiCache->hitsCounterMap[plot.first];
1137  if (hitsCounterPerLumisection != 0) {
1138  plot.second.hit_rate->Fill((double)hitsCounterPerLumisection / SEC_PER_LUMI_SECTION);
1139  }
1140 
1141  double HundredOverHitCounter = .0;
1142  if (plot.second.HitCounter != 0)
1143  HundredOverHitCounter = 100. / plot.second.HitCounter;
1144  plot.second.HPTDCErrorFlags->setBinContent(16, HundredOverHitCounter * plot.second.MHCounter);
1145  plot.second.leadingWithoutTrailing->setBinContent(1, HundredOverHitCounter * plot.second.LeadingOnlyCounter);
1146  plot.second.leadingWithoutTrailing->setBinContent(2, HundredOverHitCounter * plot.second.TrailingOnlyCounter);
1147  plot.second.leadingWithoutTrailing->setBinContent(3, HundredOverHitCounter * plot.second.CompleteCounter);
1148  }
1149 
1150  for (auto& plot : potPlots_) {
1151  double HundredOverHitCounterPot = 0.;
1152  if (plot.second.HitCounter != 0)
1153  HundredOverHitCounterPot = 100. / plot.second.HitCounter;
1154  plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1155  1, HundredOverHitCounterPot * plot.second.LeadingOnlyCounter);
1156  plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1157  2, HundredOverHitCounterPot * plot.second.TrailingOnlyCounter);
1158  plot.second.leadingWithoutTrailingCumulativePot->setBinContent(
1159  3, HundredOverHitCounterPot * plot.second.CompleteCounter);
1160 
1161  plot.second.MHComprensive->Reset();
1162  CTPPSDiamondDetId rpId(plot.first);
1163  for (auto& chPlot : channelPlots_) {
1164  CTPPSDiamondDetId chId(chPlot.first);
1165  if (chId.arm() == rpId.arm() && chId.rp() == rpId.rp()) {
1166  plot.second.MHComprensive->Fill(chId.plane(), chId.channel(), chPlot.second.HPTDCErrorFlags->getBinContent(16));
1167  }
1168  }
1169  }
1170 
1171  // Efficiencies of single channels
1172  for (auto& plot : potPlots_) {
1173  plot.second.EfficiencyOfChannelsInPot->Reset();
1174  for (auto& element : plot.second.effTriplecountingChMap) {
1175  if (plot.second.effDoublecountingChMap[element.first] > 0) {
1176  int plane = element.first / 100;
1177  int channel = element.first % 100;
1178  double counted = element.second;
1179  double total = plot.second.effDoublecountingChMap[element.first];
1180  double efficiency = counted / total;
1181  // double error = std::sqrt( efficiency * ( 1 - efficiency ) / total );
1182 
1183  plot.second.EfficiencyOfChannelsInPot->Fill(plane, channel, 100 * efficiency);
1184  }
1185  }
1186  }
1187 
1188  // Efficeincy wrt pixels //TODO
1189  for (auto& plot : planePlots_) {
1190  TH2F* hitHistoTmp = plot.second.EfficiencyWRTPixelsInPlane->getTH2F();
1191 
1192  CTPPSDiamondDetId detId_pot(plot.first);
1193  detId_pot.setPlane(0);
1194 
1195  hitHistoTmp->Divide(&(plot.second.pixelTracksMapWithDiamonds), &(potPlots_[detId_pot].pixelTracksMap));
1196  }

References CTPPSDetId::arm(), CTPPSDiamondDetId::channel(), channelPlots_, L1TObjectsTimingClient_cff::efficiency, edm::LuminosityBlock::index(), CTPPSDiamondDetId::plane(), planePlots_, plotFactory::plot, potPlots_, CTPPSDetId::rp(), profile_2016_postTS2_cff::rpId, SEC_PER_LUMI_SECTION, CTPPSDiamondDetId::setPlane(), and dqmMemoryStats::total.

Member Data Documentation

◆ centralOOT_

int CTPPSDiamondDQMSource::centralOOT_
private

Definition at line 112 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

◆ CHANNEL_OF_VFAT_CLOCK

const int CTPPSDiamondDQMSource::CHANNEL_OF_VFAT_CLOCK = 30
staticprivate

Definition at line 83 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ channelPlots_

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

Definition at line 203 of file CTPPSDiamondDQMSource.cc.

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

◆ CTPPS_DIAMOND_NUM_OF_CHANNELS

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_NUM_OF_CHANNELS = 12
staticprivate

Definition at line 94 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

◆ CTPPS_DIAMOND_NUM_OF_PLANES

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_NUM_OF_PLANES = 4
staticprivate

Definition at line 93 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

◆ CTPPS_DIAMOND_RP_ID

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_RP_ID = 6
staticprivate

Definition at line 89 of file CTPPSDiamondDQMSource.cc.

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

◆ CTPPS_DIAMOND_STATION_ID

const int CTPPSDiamondDQMSource::CTPPS_DIAMOND_STATION_ID = 1
staticprivate

Definition at line 88 of file CTPPSDiamondDQMSource.cc.

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

◆ CTPPS_FAR_RP_ID

const int CTPPSDiamondDQMSource::CTPPS_FAR_RP_ID = 3
staticprivate

Definition at line 92 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

◆ CTPPS_FED_ID_45

const int CTPPSDiamondDQMSource::CTPPS_FED_ID_45 = 583
staticprivate

Definition at line 95 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ CTPPS_FED_ID_56

const int CTPPSDiamondDQMSource::CTPPS_FED_ID_56 = 582
staticprivate

Definition at line 96 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ CTPPS_NEAR_RP_ID

const int CTPPSDiamondDQMSource::CTPPS_NEAR_RP_ID = 2
staticprivate

Definition at line 91 of file CTPPSDiamondDQMSource.cc.

◆ CTPPS_NUM_OF_ARMS

const int CTPPSDiamondDQMSource::CTPPS_NUM_OF_ARMS = 2
staticprivate

Definition at line 87 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

◆ CTPPS_PIXEL_STATION_ID

const int CTPPSDiamondDQMSource::CTPPS_PIXEL_STATION_ID = 2
staticprivate

Definition at line 90 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

◆ ctppsGeometryEventToken_

edm::ESGetToken<CTPPSGeometry, VeryForwardRealGeometryRecord> CTPPSDiamondDQMSource::ctppsGeometryEventToken_
private

Definition at line 106 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ ctppsGeometryRunToken_

edm::ESGetToken<CTPPSGeometry, VeryForwardRealGeometryRecord> CTPPSDiamondDQMSource::ctppsGeometryRunToken_
private

Definition at line 105 of file CTPPSDiamondDQMSource.cc.

Referenced by dqmBeginRun().

◆ DISPLAY_RESOLUTION_FOR_HITS_MM

const double CTPPSDiamondDQMSource::DISPLAY_RESOLUTION_FOR_HITS_MM = 0.1
staticprivate

Definition at line 84 of file CTPPSDiamondDQMSource.cc.

◆ EC_difference_45_

int CTPPSDiamondDQMSource::EC_difference_45_
private

Definition at line 165 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ EC_difference_56_

int CTPPSDiamondDQMSource::EC_difference_56_
private

Definition at line 165 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ excludeMultipleHits_

bool CTPPSDiamondDQMSource::excludeMultipleHits_
private

Definition at line 108 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ globalPlot_

GlobalPlots CTPPSDiamondDQMSource::globalPlot_
private

Definition at line 121 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

◆ horizontalShiftBwDiamondPixels_

double CTPPSDiamondDQMSource::horizontalShiftBwDiamondPixels_
private

Definition at line 109 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

◆ horizontalShiftOfDiamond_

double CTPPSDiamondDQMSource::horizontalShiftOfDiamond_
private

Definition at line 110 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

◆ HPTDC_BIN_WIDTH_NS

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

Definition at line 86 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ INV_DISPLAY_RESOLUTION_FOR_HITS_MM

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

◆ planePlots_

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

Definition at line 182 of file CTPPSDiamondDQMSource.cc.

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

◆ potPlots_

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

◆ runParameters_

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

Definition at line 111 of file CTPPSDiamondDQMSource.cc.

Referenced by CTPPSDiamondDQMSource(), and dqmBeginRun().

◆ SEC_PER_LUMI_SECTION

const double CTPPSDiamondDQMSource::SEC_PER_LUMI_SECTION = 23.31
staticprivate

Definition at line 82 of file CTPPSDiamondDQMSource.cc.

Referenced by globalEndLuminosityBlock().

◆ tokenDiamondHit_

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

Definition at line 101 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ tokenDiamondTrack_

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

Definition at line 102 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ tokenDigi_

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

Definition at line 100 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ tokenFEDInfo_

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

Definition at line 103 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ tokenPixelTrack_

edm::EDGetTokenT<edm::DetSetVector<CTPPSPixelLocalTrack> > CTPPSDiamondDQMSource::tokenPixelTrack_
private

Definition at line 99 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ tokenStatus_

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

Definition at line 98 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ verbosity_

unsigned int CTPPSDiamondDQMSource::verbosity_
private

Definition at line 113 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

edm::DetSetVector
Definition: DetSetVector.h:61
CTPPSDiamondDQMSource::tokenPixelTrack_
edm::EDGetTokenT< edm::DetSetVector< CTPPSPixelLocalTrack > > tokenPixelTrack_
Definition: CTPPSDiamondDQMSource.cc:99
CTPPSDiamondDQMSource::tokenDigi_
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondDigi > > tokenDigi_
Definition: CTPPSDiamondDQMSource.cc:100
mps_fire.i
i
Definition: mps_fire.py:428
HLT_FULL_cff.track
track
Definition: HLT_FULL_cff.py:11713
CTPPSDiamondDQMSource::HPTDC_BIN_WIDTH_NS
static const double HPTDC_BIN_WIDTH_NS
Definition: CTPPSDiamondDQMSource.cc:86
CTPPSDiamondDQMSource::CTPPS_FAR_RP_ID
static const int CTPPS_FAR_RP_ID
Definition: CTPPSDiamondDQMSource.cc:92
CTPPSGeometry
The manager class for TOTEM RP geometry.
Definition: CTPPSGeometry.h:29
CTPPSDiamondDQMSource::ctppsGeometryRunToken_
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > ctppsGeometryRunToken_
Definition: CTPPSDiamondDQMSource.cc:105
CTPPSDiamondDQMSource::potPlots_
std::unordered_map< unsigned int, PotPlots > potPlots_
Definition: CTPPSDiamondDQMSource.cc:164
CTPPSDiamondDQMSource::CTPPS_DIAMOND_NUM_OF_CHANNELS
static const int CTPPS_DIAMOND_NUM_OF_CHANNELS
Definition: CTPPSDiamondDQMSource.cc:94
DetGeomDesc::translation
const Translation & translation() const
Definition: DetGeomDesc.h:75
mps_update.status
status
Definition: mps_update.py:69
edm::LuminosityBlock::index
LuminosityBlockIndex index() const
Definition: LuminosityBlock.cc:28
CTPPSDiamondDQMSource::tokenDiamondTrack_
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondLocalTrack > > tokenDiamondTrack_
Definition: CTPPSDiamondDQMSource.cc:102
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
CTPPSDiamondDQMSource::tokenFEDInfo_
edm::EDGetTokenT< std::vector< TotemFEDInfo > > tokenFEDInfo_
Definition: CTPPSDiamondDQMSource.cc:103
CTPPSDiamondDetId::setPlane
void setPlane(uint32_t channel)
Definition: CTPPSDiamondDetId.h:48
CTPPSDiamondDQMSource::tokenDiamondHit_
edm::EDGetTokenT< edm::DetSetVector< CTPPSDiamondRecHit > > tokenDiamondHit_
Definition: CTPPSDiamondDQMSource.cc:101
CTPPSDiamondDQMSource::channelPlots_
std::unordered_map< unsigned int, ChannelPlots > channelPlots_
Definition: CTPPSDiamondDQMSource.cc:203
CTPPSDiamondDetId::setChannel
void setChannel(uint32_t channel)
Definition: CTPPSDiamondDetId.h:55
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
L1TObjectsTimingClient_cff.efficiency
efficiency
Definition: L1TObjectsTimingClient_cff.py:10
CTPPSDiamondDQMSource::excludeMultipleHits_
bool excludeMultipleHits_
Definition: CTPPSDiamondDQMSource.cc:108
edm::Handle
Definition: AssociativeIterator.h:50
plotFactory.plot
plot
Definition: plotFactory.py:109
edm::RunBase::run
RunNumber_t run() const
Definition: RunBase.h:40
CTPPSDiamondDQMSource::CTPPS_FED_ID_45
static const int CTPPS_FED_ID_45
Definition: CTPPSDiamondDQMSource.cc:95
HPTDCErrorFlags
Definition: HPTDCErrorFlags.h:15
CTPPSDiamondDQMSource::EC_difference_45_
int EC_difference_45_
Definition: CTPPSDiamondDQMSource.cc:165
edm::LogProblem
Log< level::Error, true > LogProblem
Definition: MessageLogger.h:131
DetGeomDesc::getDiamondDimensions
const DiamondDimensions & getDiamondDimensions() const
Definition: DetGeomDesc.h:85
CTPPSDiamondDQMSource::EC_difference_56_
int EC_difference_56_
Definition: CTPPSDiamondDQMSource.cc:165
CTPPSDiamondDQMSource::planePlots_
std::unordered_map< unsigned int, PlanePlots > planePlots_
Definition: CTPPSDiamondDQMSource.cc:182
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
CTPPSDiamondDQMSource::horizontalShiftOfDiamond_
double horizontalShiftOfDiamond_
Definition: CTPPSDiamondDQMSource.cc:110
CTPPSDiamondDQMSource::CTPPS_DIAMOND_NUM_OF_PLANES
static const int CTPPS_DIAMOND_NUM_OF_PLANES
Definition: CTPPSDiamondDQMSource.cc:93
relativeConstraints.geom
geom
Definition: relativeConstraints.py:72
HI_PhotonSkim_cff.rechits
rechits
Definition: HI_PhotonSkim_cff.py:76
DiamondDimensions::xHalfWidth
double xHalfWidth
Definition: DetGeomDesc.h:44
CTPPSDiamondDQMSource::CHANNEL_OF_VFAT_CLOCK
static const int CHANNEL_OF_VFAT_CLOCK
Definition: CTPPSDiamondDQMSource.cc:83
CTPPSDiamondDQMSource::ctppsGeometryEventToken_
edm::ESGetToken< CTPPSGeometry, VeryForwardRealGeometryRecord > ctppsGeometryEventToken_
Definition: CTPPSDiamondDQMSource.cc:106
CTPPSDiamondDQMSource::centralOOT_
int centralOOT_
Definition: CTPPSDiamondDQMSource.cc:112
CTPPSDiamondDQMSource::CTPPS_PIXEL_STATION_ID
static const int CTPPS_PIXEL_STATION_ID
Definition: CTPPSDiamondDQMSource.cc:90
CTPPSDiamondDetId
Detector ID class for CTPPS Timing Diamond detectors. Bits [19:31] : Assigend in CTPPSDetId Calss Bit...
Definition: CTPPSDiamondDetId.h:24
CTPPSDiamondDQMSource::INV_DISPLAY_RESOLUTION_FOR_HITS_MM
static const double INV_DISPLAY_RESOLUTION_FOR_HITS_MM
Definition: CTPPSDiamondDQMSource.cc:85
tracks
const uint32_t *__restrict__ const HitContainer *__restrict__ TkSoA *__restrict__ tracks
Definition: CAHitNtupletGeneratorKernelsImpl.h:159
CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING
static constexpr int TIMESLICE_WITHOUT_LEADING
Definition: CTPPSDiamondRecHit.h:44
CTPPSDiamondDQMSource::globalPlot_
GlobalPlots globalPlot_
Definition: CTPPSDiamondDQMSource.cc:121
CTPPSDiamondDQMSource::CTPPS_NUM_OF_ARMS
static const int CTPPS_NUM_OF_ARMS
Definition: CTPPSDiamondDQMSource.cc:87
CTPPSDiamondDQMSource::CTPPS_FED_ID_56
static const int CTPPS_FED_ID_56
Definition: CTPPSDiamondDQMSource.cc:96
DetGeomDesc
Definition: DetGeomDesc.h:49
CTPPSDiamondDQMSource::CTPPS_DIAMOND_STATION_ID
static const int CTPPS_DIAMOND_STATION_ID
Definition: CTPPSDiamondDQMSource.cc:88
HPTDCErrorFlags::errorId
bool errorId(unsigned short id) const
Definition: HPTDCErrorFlags.h:19
channelAlignedWithTrack
bool channelAlignedWithTrack(const CTPPSGeometry *geom, const CTPPSDiamondDetId &detid, const CTPPSDiamondLocalTrack &localTrack, const float tolerance=1)
Definition: CTPPSDiamondDQMSource.cc:44
edm::contains
bool contains(EventRange const &lh, EventID const &rh)
Definition: EventRange.cc:37
CTPPSPixelDetId
Definition: CTPPSPixelDetId.h:16
HcalObjRepresent::Fill
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
Definition: HcalObjRepresent.h:1053
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:127
protons_cff.arm
arm
Definition: protons_cff.py:43
profile_2016_postTS2_cff.rpId
rpId
Definition: profile_2016_postTS2_cff.py:21
edm::eventsetup::heterocontainer::insert
bool insert(Storage &iStorage, ItemType *iItem, const IdTag &iIdTag)
Definition: HCMethods.h:50
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
CTPPSDiamondDQMSource::SEC_PER_LUMI_SECTION
static const double SEC_PER_LUMI_SECTION
Definition: CTPPSDiamondDQMSource.cc:82
CTPPSDiamondDQMSource::verbosity_
unsigned int verbosity_
Definition: CTPPSDiamondDQMSource.cc:113
dqmMemoryStats.total
total
Definition: dqmMemoryStats.py:152
ztail.d
d
Definition: ztail.py:151
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
RunInfoPI::valid
Definition: RunInfoPayloadInspectoHelper.h:16
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:155
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
event
Definition: event.py:1
edm::EventID
Definition: EventID.h:31
CTPPSDiamondDQMSource::CTPPS_DIAMOND_RP_ID
static const int CTPPS_DIAMOND_RP_ID
Definition: CTPPSDiamondDQMSource.cc:89
edm::EventRange
Definition: EventRange.h:31
CTPPSDiamondDQMSource::tokenStatus_
edm::EDGetTokenT< edm::DetSetVector< TotemVFATStatus > > tokenStatus_
Definition: CTPPSDiamondDQMSource.cc:98
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
edm::InputTag
Definition: InputTag.h:15
hit
Definition: SiStripHitEffFromCalibTree.cc:88
BeamSpotProblemMonitor_cff.pixelTracks
pixelTracks
Definition: BeamSpotProblemMonitor_cff.py:7
muonDTDigis_cfi.pset
pset
Definition: muonDTDigis_cfi.py:27
CTPPSDiamondDQMSource::horizontalShiftBwDiamondPixels_
double horizontalShiftBwDiamondPixels_
Definition: CTPPSDiamondDQMSource.cc:109
CTPPSDiamondDQMSource::runParameters_
std::vector< std::pair< edm::EventRange, int > > runParameters_
Definition: CTPPSDiamondDQMSource.cc:111