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
 
 EDProducer (const EDProducer &)=delete
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsInputProcessBlocks () const final
 
bool wantsProcessBlocks () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
std::vector< bool > const & recordProvenanceList () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
TypeLabelList const & typeLabelList () const
 used by the fwk to register the list of products of this module More...
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase &&)=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
 
void selectInputProcessBlocks (ProductRegistry const &productRegistry, ProcessBlockHelperBase const &processBlockHelperBase)
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, const edm::Run &, const edm::EventSetup &) override
 
void dqmBeginRun (const edm::Run &, const edm::EventSetup &) override
 
std::shared_ptr< 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_
 
bool perLSsaving_
 
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 476 of file CTPPSDiamondDQMSource.cc.

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

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

◆ ~CTPPSDiamondDQMSource()

CTPPSDiamondDQMSource::~CTPPSDiamondDQMSource ( )
override

Definition at line 502 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 568 of file CTPPSDiamondDQMSource.cc.

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

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(), perLSsaving_, 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 532 of file CTPPSDiamondDQMSource.cc.

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

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 506 of file CTPPSDiamondDQMSource.cc.

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

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 554 of file CTPPSDiamondDQMSource.cc.

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

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

◆ globalEndLuminosityBlock()

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

Definition at line 1135 of file CTPPSDiamondDQMSource.cc.

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

References CTPPSDetId::arm(), CTPPSDiamondDetId::channel(), channelPlots_, L1TObjectsTimingClient_cff::efficiency, edm::LuminosityBlock::index(), perLSsaving_, 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 113 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 204 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 166 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze().

◆ EC_difference_56_

int CTPPSDiamondDQMSource::EC_difference_56_
private

Definition at line 166 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 122 of file CTPPSDiamondDQMSource.cc.

Referenced by bookHistograms().

◆ horizontalShiftBwDiamondPixels_

double CTPPSDiamondDQMSource::horizontalShiftBwDiamondPixels_
private

Definition at line 110 of file CTPPSDiamondDQMSource.cc.

Referenced by analyze(), and dqmBeginRun().

◆ horizontalShiftOfDiamond_

double CTPPSDiamondDQMSource::horizontalShiftOfDiamond_
private

Definition at line 111 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

◆ perLSsaving_

bool CTPPSDiamondDQMSource::perLSsaving_
private

◆ planePlots_

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

Definition at line 183 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 112 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 114 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:11724
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:165
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:79
mps_update.status
status
Definition: mps_update.py:68
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:204
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::perLSsaving_
bool perLSsaving_
Definition: CTPPSDiamondDQMSource.cc:109
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:166
edm::LogProblem
Log< level::Error, true > LogProblem
Definition: MessageLogger.h:131
DetGeomDesc::getDiamondDimensions
const DiamondDimensions & getDiamondDimensions() const
Definition: DetGeomDesc.h:89
CTPPSDiamondDQMSource::EC_difference_56_
int EC_difference_56_
Definition: CTPPSDiamondDQMSource.cc:166
CTPPSDiamondDQMSource::planePlots_
std::unordered_map< unsigned int, PlanePlots > planePlots_
Definition: CTPPSDiamondDQMSource.cc:183
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
CTPPSDiamondDQMSource::horizontalShiftOfDiamond_
double horizontalShiftOfDiamond_
Definition: CTPPSDiamondDQMSource.cc:111
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:45
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:113
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:176
CTPPSDiamondRecHit::TIMESLICE_WITHOUT_LEADING
static constexpr int TIMESLICE_WITHOUT_LEADING
Definition: CTPPSDiamondRecHit.h:44
CTPPSDiamondDQMSource::globalPlot_
GlobalPlots globalPlot_
Definition: CTPPSDiamondDQMSource.cc:122
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:50
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:39
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:114
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:159
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:142
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:110
CTPPSDiamondDQMSource::runParameters_
std::vector< std::pair< edm::EventRange, int > > runParameters_
Definition: CTPPSDiamondDQMSource.cc:112