Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2022-06-24 22:51:51

0001 #ifndef DQM_GEM_INTERFACE_GEMDAQStatusSource_h
0002 #define DQM_GEM_INTERFACE_GEMDAQStatusSource_h
0003 
0004 #include "FWCore/Framework/interface/ESHandle.h"
0005 #include "FWCore/Framework/interface/MakerMacros.h"
0006 #include "FWCore/PluginManager/interface/ModuleDef.h"
0007 #include "FWCore/Framework/interface/Event.h"
0008 #include "FWCore/Framework/interface/EventSetup.h"
0009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0010 #include "FWCore/Utilities/interface/InputTag.h"
0011 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0012 
0013 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0014 #include "DQMServices/Core/interface/DQMStore.h"
0015 #include "DQMServices/Core/interface/MonitorElement.h"
0016 
0017 #include "Validation/MuonGEMHits/interface/GEMValidationUtils.h"
0018 
0019 #include "CondFormats/DataRecord/interface/GEMChMapRcd.h"
0020 #include "CondFormats/GEMObjects/interface/GEMChMap.h"
0021 #include "DataFormats/GEMDigi/interface/GEMDigiCollection.h"
0022 #include "DataFormats/GEMDigi/interface/GEMVFATStatusCollection.h"
0023 #include "DataFormats/GEMDigi/interface/GEMOHStatusCollection.h"
0024 #include "DataFormats/GEMDigi/interface/GEMAMCStatusCollection.h"
0025 #include "DataFormats/GEMDigi/interface/GEMAMC13StatusCollection.h"
0026 
0027 #include "DQM/GEM/interface/GEMDQMBase.h"
0028 
0029 #include <string>
0030 
0031 //----------------------------------------------------------------------------------------------------
0032 
0033 class GEMDAQStatusSource : public GEMDQMBase {
0034 public:
0035   explicit GEMDAQStatusSource(const edm::ParameterSet &cfg);
0036   ~GEMDAQStatusSource() override{};
0037   static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);
0038 
0039 protected:
0040   void LoadROMap(edm::EventSetup const &iSetup);
0041 
0042   void dqmBeginRun(edm::Run const &, edm::EventSetup const &) override{};
0043   void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override;
0044   void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override;
0045 
0046   void FillWithRiseErr(MonitorElement *h, Int_t nX, Int_t nY, Bool_t &bErr) {
0047     h->Fill(nX, nY);
0048     bErr = true;
0049   };
0050 
0051   void FillStatusSummaryPlot(std::map<ME4IdsKey, bool> &mapChamber,
0052                              MonitorElement *h2Plot,
0053                              std::map<ME4IdsKey, bool> *pmapSummary = nullptr) {
0054     for (auto const &[key4, bFlag] : mapChamber) {  // bFlag is not used
0055       ME3IdsKey key3 = key4Tokey3(key4);
0056       Int_t nChamber = keyToChamber(key4);
0057       h2Plot->Fill(nChamber, mapStationToIdx_[key3]);
0058       if (pmapSummary != nullptr)
0059         (*pmapSummary)[key4] = true;
0060     }
0061   };
0062 
0063 private:
0064   int ProcessWithMEMap3(BookingHelper &bh, ME3IdsKey key) override;
0065   int ProcessWithMEMap3WithChamber(BookingHelper &bh, ME4IdsKey key) override;
0066 
0067   void SetLabelAMC13Status(MonitorElement *h2Status);
0068   void SetLabelAMCStatus(MonitorElement *h2Status);
0069   void SetLabelOHStatus(MonitorElement *h2Status);
0070   void SetLabelVFATStatus(MonitorElement *h2Status);
0071 
0072   const edm::ESGetToken<GEMChMap, GEMChMapRcd> gemChMapToken_;
0073 
0074   edm::EDGetToken tagVFAT_;
0075   edm::EDGetToken tagOH_;
0076   edm::EDGetToken tagAMC_;
0077   edm::EDGetToken tagAMC13_;
0078 
0079   Bool_t bWarnedNotFound_;
0080 
0081   MonitorElement *h2AMC13Status_;
0082 
0083   MEMap3Inf mapStatusOH_;
0084   MEMap3Inf mapStatusVFAT_;
0085 
0086   MEMap3Inf mapStatusWarnVFATPerLayer_;
0087   MEMap3Inf mapStatusErrVFATPerLayer_;
0088   MEMap4Inf mapStatusVFATPerCh_;
0089 
0090   MonitorElement *h2SummaryStatusAll;
0091   MonitorElement *h2SummaryStatusWarning;
0092   MonitorElement *h2SummaryStatusError;
0093   MonitorElement *h2SummaryStatusVFATWarning;
0094   MonitorElement *h2SummaryStatusVFATError;
0095   MonitorElement *h2SummaryStatusOHWarning;
0096   MonitorElement *h2SummaryStatusOHError;
0097   MonitorElement *h2SummaryStatusAMCWarning;
0098   MonitorElement *h2SummaryStatusAMCError;
0099   MonitorElement *h2SummaryStatusAMC13Error;
0100 
0101   std::string strFolderMain_;
0102 
0103   Bool_t bFillAMC_;
0104 
0105   Int_t nBXMin_, nBXMax_;
0106 
0107   std::map<UInt_t, int> mapFEDIdToRe_;
0108   std::map<UInt_t, int> mapFEDIdToSt_;
0109   std::map<UInt_t, int> mapFEDIdToPosition_;
0110   std::map<UInt_t, MonitorElement *> mapFEDIdToAMCStatus_;
0111   std::map<int, std::vector<GEMDetId>> mapAMC13ToListChamber_;
0112   std::map<std::tuple<int, int>, std::vector<GEMDetId>> mapAMCToListChamber_;
0113   Int_t nAMCSlots_;
0114 
0115   int nBitAMC13_ = 10;
0116   int nBitAMC_ = 12;
0117   int nBitOH_ = 17;
0118   int nBitVFAT_ = 7;
0119 };
0120 
0121 #endif  // DQM_GEM_INTERFACE_GEMDAQStatusSource_h